이중 포인터 함수로 전달할때.
안녕하세요..
와서 눈팅만 하다가 질문이 있어 이렇게 글을 적습니다.
#include <stdio.h>
void callfunc(char **, int);
void callfunc(
char **HeaderList,
int nCnt
)
{
printf("## HeaderList %d, %#x\n", sizeof(HeaderList), HeaderList);
}
int main(int argc, char *argv[])
{
char HeaderList[5][4] = {
"AAA",
"BBB",
"CCC",
"DDD",
"EEE"
};
printf("# HeaderList %d, %#x\n", sizeof(HeaderList), HeaderList);
callfunc(HeaderList, 5);
}
원래의 의도는 callfunc 에서 위의 이차 배열을 읽을 수 있게 하려고 했습니다만, 계속 signal 11 번을 받아서 sizeof() 로 찍었더니 다음과 같은 결과가 나왔습니다.
]% a
# HeaderList 20, 0x7f7f0e68
## HeaderList 4, 0x7f7f0e68
컴파일시에도 warning 이 뜨구요.
cc: "main37.c", line 25: warning 604: Pointers are not assignment-compatible.
cc: "main37.c", line 25: warning 563: Argument #1 is not the correct type.
이차 배열을 어떻게 하면 포인터로 넘겨서 읽을 수 있나요?
HP_UX 11.i 에서 cc 로 컴파일 한 것입니다.
이중 포인터
배열을 인자로 넘길때는 1차원 배열의 크기를 넘겨야 합니다.
함수를 다음과 같이 고치면 됩니다.
참고로 글쓰실때 제목 밑에있는
댓글 달기