64.3 4번문제
, 코 딩님이 작성#include <stdio.h> void setElement(int (*arr)[4]) { arr[0][3] = 500; } int main() { int numArr[3][4] = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; setElement(numArr); printf("%d %d\n", numArr[0][3], numArr[1][3]); }이 문제에서 값이 함수밖으로도 반환된다는게 이해가 안됩니다 .
제가 이해한 것으로는 함수 바깥에서도 값이 변경되게 하려면 변경하려는 변수의 메모리주소를 통해 접근해야한다고 이해하였습니다 .
제가 이해한 것을 적용해본다면 setElement의 전달인자는 2차원배열의 메모리주소(&numArr)이고 매개변수는 이 메모리주소를 담을 수 있는 삼중포인터로 적용해야한다고 생각이 됩니다 .
어떤 것이 문제인지 알려주세요 . 이해가 안됩니다 .
Re: 64.3 4번문제
, 도장_ 관리자님이 작성해당 예제는 그림 64-1을 보면 알 수 있습니다.
UNIT 64.1의 parameter_array_set_element.c 예제 코드를 그림 64-1로 표현한 것입니다.
64.3의 4번 문제는 1차원으로 제시한 예제를 2차원 배열로 변형해서 제시한 것입니다. 1차원 배열이나 2차원 배열이나 배열을 포인터로 받아서 처리하는 부분은 같습니다.
UNIT 64.2는 2차원 배열을 매개변수로 사용하는 방법을 설명하고 있습니다.
setElement 함수 안에서 변수를 생성하지 않았습니다. 함수 안에서 생성한 변수는 함수 호출이 끝나면 사라집니다.
setElement 함수는 함수 바깥에서 생성된 변수를 포인터로 전달 받아서 접근합니다. 따라서 함수 호출이 종료된 후에도 해당 변수의 생명주기에 관여하지 않습니다.