반응형
포인터의 사용법은 이렇습니다.
선언 후 초기화.
int num = 10;
int *p;
p = #
선언과 동시에 초기화
int num = 10;
int *p = #
여기서 &num은 주소 값을 전달한다는 의미 입니다.
배열도 포인터가 됩니다.
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p = arr;
printf("%d\n", p[3]);
즉 포인터 변수에 배열의 시작 주소 값을 받으면
포인터 변수는 배열처럼 사용이 가능 합니다.
그럼 여기서 의문점이 하나 생깁니다.
"&arr로 주지 않고 arr로만 줬는데 주소 값이 넘어갔내?"
원래 배열의 값을 표현할 때는 arr[0] 이런식으로 표현 합니다.
하지만 뒤에 대괄호를 빼고 arr만 표현 한다면
arr배열의 시작 주소 값이 반환됩니다.
즉 arr == &(arr[0])과 같은 말이 됩니다.
포인터가 가르키고 있는 변수의 값을 표현하려면 다음과 같습니다.
int num = 10;
int *p = #
int sum = num + *p;
printf("%d\n", *p);
즉, p와 *p와 &p의 차이점은
p = p가 가르키고 있는 변수의 주소 값(num의 주소 값)
*p = p가 가르키고 있는 변수의 값(num의 값)
&p = p의 주소 값
입니다. 처음에 공부할 때 저도 이부분이 엄청 했갈렸습니다.
이것 역시 사용하다 보면 익숙해 집니다.
따라서 *p의 값은 10이 되는 것입니다.
그림으로 만들어 봤습니다. 좀 더 이해가 쉬워졌으면 하는 바램입니다.
반응형
'프로그래밍 > C언어' 카테고리의 다른 글
포인터(1) 기초 이해 (0) | 2018.06.24 |
---|
댓글