본문 바로가기
프로그래밍/C언어

C언어] 포인터(2) 사용법

by Hwan2 2019. 1. 19.
반응형

포인터의 사용법은 이렇습니다.

 

선언 후 초기화.

 

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

댓글


스킨편집 -> html 편집에서