[완료] C언어 포인터가 참조하는 char배열의 크기?

luciell의 이미지

C를 공부중인 학생입니다 :)

call by reference 로 함수를 구현하다보니 제가 원하는 값을 얻기 위해선

포인터가 참조하는 값의 크기가 필요하게 되었습니다.

물론 그 값을 아규먼트로 넘겨도 되지만, 궁금하여 질문하게 되었습니다.

예를들어 다음 코드를 보시면

#include <stdio.h>
 
int main(int argc, **argv)
{
  char str[200];
  char *p;
  p = str;
 
  printf("p sizeof  : %d\n", sizeof(p) ); // p라는 포인터의 크기 : 4
  printf("*p sizeof : %d\n", sizeof(*p)); // p가 가리키는 값(str배열의 첫번째 주소)의 크기 : 1
 
  return 0;
}

이와 같이 포인터가 가르키는 배열의 크기를 구하고 싶습니다.
다음은 제가 구현할려는 코드입니다.

void 함수 (char *str)
{
  int strsize;
  strsize = 이부분에서 str배열의 크기인 200을 가져오고 싶습니다.
}
int main(int argc, char **argv)
{
  char str[200];
 
  함수(str);
 
  return 0;
}

많은 개발자 선배님들의 조언을 구해봅니다!

jick의 이미지

C에서 그걸 알아낼 수 있는 방법은 없습니다. 함수 인자로 배열 크기를 함께 넘겨야 합니다.

luciell의 이미지

흐음.. 그렇다면 아규먼트로 넘기는 방법밖에는 없는것인가요?.. 이런..
감사합니다^^

네가 꿈을 꾸지 않는 한, 꿈은 절대 시작되지 않는단다.
언제나 출발은 바로 '여기'야 떄가 무르익으면, 그럴수 있는 조건이 갖춰지면,
하고 미루다 보면, 오느새 현실에 파묻혀 소망을 잃어버리지.
그러므로 무언가 '되기(be)' 위해서는 반드시 지금 이 순간 무언가를 '해야(do)'만 해
- Stuart Avery Gold 의 우화소설 Ping 중에서..