참조로 함수의 1 차원 배열을 전달하려고합니다. 다음은 관련 코드입니다.배열 (구조체의 멤버)을 함수로 전달합니다.
void function1();
void function2(struct template *);
struct template{
char array[11];
};
function1()
{
struct template myStruct = {0}; //initializing
function2(&myStruct);
}
function2(struct template *myStruct)
{
void writeToArray(char array[11]); //locally declaring a function
writeToArray(myStruct->array);
}
void writeToArray(char array[11])
{
/*** stuff ****/
}
이제이 코드를 디버깅 할 때 예기치 않은 결과가 발생합니다. writeToArray()를 입력하면
p sizeof(array)
으로, 4를 반환합니다. 11의 값을 반환하지 않아야합니까?
모든 변수의 "sizeof"는 컴파일 타임에 정적으로 설정된다는 것을 알고 있습니다. 그렇다면 컴파일러는 writeToArray()의 "char array [11]"을 size == 4로 고려하는 이유는 무엇입니까?