포스트

[ C++ ] 포인터

포인터



1. 포인터


특정한 변수 자체가 존재하는 메모리 주소의 값

what image shows 포인터


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(void) {
int a = 5;

//b가 a의 주소를 가지고 있다.
int *b = &a;

//b가 a의 주소를 가지고 있으니 a의 주소에 간접 참조하여 a값 5를 반환한다.
printf("%d", *b);

system("pause");

return 0;
}
>>5


기존 a를 이용해도 5 값을 찾을 수 있지만 포인터 변수인 b를 이용해서도 5 값을 찾을 수 있습니다.



2. 이중 포인터


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(void) {

int a = 5;

int *b = &a;

//*C 가 b 의 주소 값을 가지고 있다.
int **c = &b;

//*C 가 b 의 주소를 가지고 있으니까 b 의 주소 에 한번더 간접 참조하여 a 값인 5를 반환한다.
printf("%d", **c);

system("pause");

return 0;
}

>>5


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int main(void) {

int a = 5;

int *b = &a;

int **c = &b;

printf("%d\n", &a);

printf("%d\n", b);

printf("%d\n", *c);

printf("%d\n", **c);

system("pause");

return 0;

}

>>
20183852
20183852
20183852
5



3. 배열과 포인터


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(void) {

int a[] = { 1,2,3,4,5,6,7,8,9,10 };

int *b = a;

//b[ ] 라는 배열 자체가 포인터와 같아서 *b(즉, 값) 와 같다.=> b[2] 는 *(b+2) 과 같다
printf("%d\n", b[2]);

system("pause");

return 0;

}

>>3



이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.