어디서부터 어떻게 가르쳐야 할 지 모르겠네요.
데이터를 저장할 수 있는 공간에 붙여진 이름을 변수라고 하지요.
우리가 int a=3;
이렇게 선언을 하면, 변수 a를 위한 공간에다가, 3을 저장하게 됩니다.
그리고 a++;을 하게 되면
변수 a를 위한 공간에 있는 값을 얻어와서, 1을 더해줍니다. 그리고 그 결과를 다시 a가 저장되어 있는 공간에다가 덮어 씌웁니다.
이 두 연산을 하기 위해서 메모리의 특정한 공간 (주소)에 접근을 했네요. 여기까지는 이해가 되시나요?
junl2038 7년 전
포인터가 주소값을 저장할수있는 변수라는건 누구나 알고있습니다..
하지만 일반적으로
int num;
int * pnum = 1
이 방법은 누구나 도식화 하여 생각할수있습니다
pnum이 가르키는 것은 num의 주소이다
그러면 *pnum을 이용해 역참조하여 num의 변수값을 알 수 도있다 까지는 이해가 됩니다.
int *pnum = 1; 할경우 에러가 발생하고요
하지만 제가 하나 이해가 안되는 부분이있습니다
배열로 갔을때 int *pnum[1] = 1;
인경우 입니다.
이경우
일반적인 int num[1] = 1; 과의 차이점이 존재할까요?
포인터는 항상 주소를 가르킨다라는 생각때문에 지금 여기서 완전 햇갈리고있습니다.
혼자 곰곰히 생각해봤는데
1. 컴파일러가 임의의 공간에 int형 값 1을 할당하고 그것을 포인터배열이 가르킨다.
2. 포인터배열변수 값이 주소가 아닌 1이다.
어떤게 맞다고 봐야하나요??
그리고 2번이라면.. 그냥 배열선언과 차이가 있을까요..