728x90
반응형
포인터 연산
포인터를 대상으로 증감 연산을 실행할 경우
포인터의 형에 따라 증감의 크기가 결정된다.
예를 들어 int형 포인터 ptr에 +2 연산을 할 경우 증감크기(2) * 포인터형의 크기(4) = 8이 증가하게 된다.
Type 형 포인터의 크기를 n 만큼 증가 시 ==> sizeof(Type) * n 만큼이 증가하는 것이다.
이를 통해 배열에 순차적으로 접근할 수 있게 된다.
int arr[3] = { 11, 22, 33 };
int * ptr = arr;
for (int i = 0; i < sizeof(arr)/sizeof(int); i++)
printf("%d \n", *(ptr+i));
위의 코드처럼 배열 접근 시 응용하여 사용이 가능하다.
*(++ptr) = 20;
*(ptr+1) = 20;
위의 두 문장은 ptr이 가르키는 곳의 다음 위치에 20을 저장하는 문장이지만
문장 실행 후 ptr의 크기는 다르다.
위의 문장은 ptr의 크기를 직접 증가시켜 20을 저장하였고,
아래 문장은 ptr이 가리키는 주소를 가져온 후 거기에 1을 증가시킨 위치에 20을 저장한 것으로
문장 실행 후 윗 문장의 ptr 크기는 1이 증가하고, 아랫문장의 ptr은 변화가 없다.
arr[i]==*(arr+1)
위의 문장에서 arr는 포인터 변수여도, 배열명이어도 성립한다.
728x90
반응형
'C' 카테고리의 다른 글
C 공부 9일차 Chapter 13 포인터 배열 (0) | 2022.09.14 |
---|---|
C 공부 8일차 Chapter 13 문자열 표현의 두가지 방법 (0) | 2022.09.13 |
C 공부 6일차 Chapter 13 (0) | 2022.09.10 |
C 공부 5일차 Chapter 12 (0) | 2022.09.09 |
C 공부 4일차 Chapter 11 (0) | 2022.09.08 |