[C언어] 포인터 연산
ET의 공부/C언어2021. 1. 3. 22:27
포인터 선언
int *i_ptr; //포인터 선언
포인터에 값 넣기
int test_num = 5;
int *i_ptr; //포인터 선언
i_ptr = &test_num;
printf("%p\n",i_ptr);
//0x7ffeefbff5c8
포인터 주소 얻기
포인터 변수도 주소를 갖는다. &연산자로 포인터의 주소를 얻을 수 있다.
int test_num = 5;
int *i_ptr; //포인터 선언
i_ptr = &test_num;
printf("포인터의 값:%p\n",i_ptr);
printf("포인터의 주소 값:%p\n",&i_ptr);
//포인터의 값:0x7ffeefbff5c8
//포인터의 주소 값:0x7ffeefbff5c0
포인터 덧셈 뺄셈
포인터에 정수에 선언된 형식의 바이트수만큼 곱해진 값이 더해지거나 빼진다.
int i_arr[10] = {0,1,2,3,4,5,6,7,8,9};
int *i_ptr; //포인터 선언
i_ptr = i_arr;
printf("포인터의(주소):%p\n",i_ptr);
printf("포인터의(값):%d\n",*i_ptr);
i_ptr = i_ptr+2;
printf("포인터의 덧셈(주소):%p\n",i_ptr);
printf("포인터의 덧셈(값):%d\n",*i_ptr);
i_ptr = i_ptr-2;
printf("포인터의 뺄셈(주소):%p\n",i_ptr);
printf("포인터의 뺄셈(값):%d\n",*i_ptr);
//포인터의(주소):0x7ffeefbff5a0
//포인터의(값):0
//포인터의 덧셈(주소):0x7ffeefbff5a8
//포인터의 덧셈(값):2
//포인터의 뺄셈(주소):0x7ffeefbff5a0
//포인터의 뺄셈(값):0
포인터 증감
int i_arr[10] = {0,1,2,3,4,5,6,7,8,9};
int *i_ptr; //포인터 선언
i_ptr = i_arr;
printf("포인터의(주소):%p\n",i_ptr);
printf("포인터의(값):%d\n",*i_ptr);
i_ptr++;
printf("포인터의 증감(주소):%p\n",i_ptr);
printf("포인터의 증감(값):%d\n",*i_ptr);
i_ptr--;
printf("포인터의 감소(주소):%p\n",i_ptr);
printf("포인터의 감소(값):%d\n",*i_ptr);
//포인터의(주소):0x7ffeefbff5a0
//포인터의(값):0
//포인터의 덧셈(주소):0x7ffeefbff5a4
//포인터의 덧셈(값):1
//포인터의 뺄셈(주소):0x7ffeefbff5a0
//포인터의 뺄셈(값):0
포인터끼리의 뺄셈
뺄셈보다는 차이를 구한다고 생각해야 합니다.
int i_arr[10] = {0,1,2,3,4,5,6,7,8,9};
int *i_ptr; //포인터 선언
int *i_ptr_2;
i_ptr = i_arr; //0번쨰 원소를 가리킨다.
i_ptr_2 = i_arr+4; //4번째 원소를 가리킨다.
printf("포인터의 차이:%d\n",i_ptr_2 - i_ptr);
//포인터의 차이:4
4바이트 차이가 있다는 것이 아니라 4개의 데이터형 차이(여기선 int)만큼 떨어져 있다는 것을 뜻합니다.
'ET의 공부 > C언어' 카테고리의 다른 글
[C언어] 함수의 매개변수 배열,포인터 (0) | 2021.01.03 |
---|---|
[C언어] 포인터와 배열 (0) | 2021.01.03 |
[C언어] 이차원 배열 (0) | 2020.12.29 |
[C언어] 배열 그리고 배열 초기화 (0) | 2020.12.29 |
[C언어] 포인터 알아보기 (0) | 2020.12.22 |
댓글()