코딩 공부/C

#09. C_포인터

코딩연습중 2022. 7. 11. 00:50

포인터는 상자(변수)의 위치를 가리키는 것이라고 생각하면 편하다. 포인터 변수를 만드는 방법은 다음과 같다.

데이터 타입 * 변수명;

포인터 변수를 선언할 때, *는 뒤에 오는 변수가 포인터 변수라는 것을 알려주는 역할을 한다. 

int a = 100;
int * numPtr; // 주소(위치)를 담을 수 있는 변수
numPtr = &a;//&a은 a의 주소를 저장한 것

double dnum = 3.14;
double* dptr = &dnum;

printf("dnum = %f\n", dnum);	 // 3.14
printf("&dnum = %p\n", &dnum); // dnum의 주소
printf("dptr = %p\n", dptr);  // dnum의 주소
printf("*dptr = %f\n", *dptr);// 3.14

 위의 코드에서 마지막 줄에 *dptr의 값을 출력해보면 3.14라는 값이 나온다. 따라서 포인터 변수를 사용할 때는, *가 포인터 변수에 저장된 주소 값에 저장된 값을 가져오라는 의미를 갖는다.

위의 코드의 결과값은 아래와 같다.

10 20 30
0000000EC6DAF9C8 0000000EC6DAF9CC 0000000EC6DAF9D0
0000000EC6DAF9C8 0000000EC6DAF9CC 0000000EC6DAF9D0
10 20 30

 

위의 코드의 결과는 아래와 같다.

12
34
56
arr = 000000752ABDFB98
&arr[0][0] = 000000752ABDFB98
&arr[0][1] = 000000752ABDFB9C
&arr[1][0] = 000000752ABDFBA0