배열 포인터에 관해서 질문 드립니다.
우람늘
질문 제목 :
배열 포인터에 관한 질문
배열 포인터 변수를 통해 2차원 배열의 전체를 어떻게 구하죠?
질문 내용 :
char string[5][80];
Input(string);void Input(char (*n)[80])
{
int i, count; count = sizeof(n) / sizeof(n[0]);
printf(%u \n, sizeof(n));
현재 제가 배열포인터를 하고 있는 부분에서 물어볼 구간만 남겨둔 것 입니다.
여기에서 보시면 string + 1 을 할 경우에는 (char 1byte)80 * 1 이 되는 것이고&string + 1을 하게 되면 2차원 배열 전체를 가리키는 포인터라서 400 * 1 이 되는 거잖아요?
근대 input에 전달인자 주고 나서 매개변수로 배열포인터 변수를 선언한뒤.
count 부분을 보시면 sizeof 연산자로 몇번 돌릴지 구하게 할려하는데 이 부분에서 막히네요;;
메인 함수 부분에서 &string +1 과 같은 효과를 낼려고 하는데. n 에다가 & 연산자를 붙이면
n이 배열포인터 변수이기 때문에 포인터 변수의 주소값이 나올테니 4byte 가 나올테고..
어떻게 해야할지 모르겠습니다. (물론 사실상 반복횟수를 5라고 하면 되긴 하는데.. 호기심에 궁금해져서.)
-
슬아라
아하 정말 감사합니다 ㅠ 이거 하는 중에 갑자기 든 호기심에 작업하던게 지체된 ㅋㅋ ㅠ
-
머슴밥
아시다시피 포인터 변수로부터 배열의 크기를 알 수 있는 방법은 없습니다.
포인터 변수와 배열의 크기를 함수에 같이 전달하는 것이
배열의 모든 정보를 전달하는 유일한 방법입니다.