[C] 포인터 (pointer)
포인터
포인터란?
메모리의 주소값을 저장하는 변수
- 주소 연산자(&) : 해당 변수의 메모리 시작 주소값을 반환, (&: ampersand) (~의 주소)
- 간접 참조 연산자(*) : 선언된 포인터 변수가 가리키는 변수를 구함 (~의 값)
- 포인터(*) : 주소를 저장하고 있는 변수, 포인터 변수 선언할 때 사용
1
2
3
4
5
6
int x = 7; // 변수 선언
int *ptr = &x; // 포인터 선언
printf("%d\n", *ptr); // output >>> 7
int **pptr = &ptr; // 포인터 참조
printf("%d\n", **pptr); // output >>> 7
- 포인터 변수 ptr이 x를 가리키고 있음.
예제
1
2
3
4
5
6
7
8
9
10
int num1 = 1234;
double num2 = 3.14;
int* ptr_num1 = &num1;
double* ptr_num2 = &num2;
printf("ptr_num1의 크기 : %d\n", sizeof(ptr_num1));
printf("ptr_num1이 가리키고 있는 주소값 : %#x\n", ptr_num1);
printf("ptr_num2가 가리키고 있는 주소값 : %#x\n", ptr_num2);
printf("ptr_num1이 가리키고 있는 주소에 저장된 값 : %d\n", *ptr_num1);
printf("ptr_num2이 가리키고 있는 주소에 저장된 값 : %f\n", *ptr_num2);
1
2
3
4
5
6
// output
ptr_num1의 크기 : 8
ptr_num1이 가리키고 있는 주소값 : 0x9a55df4
ptr_num2이 가리키고 있는 주소값 : 0x9a55de8
ptr_num1이 가리키고 있는 주소에 저장된 값 : 1234
ptr_num2이 가리키고 있는 주소에 저장된 값 : 3.140000
포인터의 연산
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
int arr[5] = {1, 2, 3, 4, 5};
int *ptr1, *ptr2, *ptr3;
ptr1 = arr; // 포인터에 주소 대입
ptr2 = &arr[2]; // 포인터에 주소 대입
}
test. ing.
Leave a comment