C

C 공부 7일차 Chapter 13

yeooniyeoon 2022. 9. 12. 23:50
728x90
SMALL

포인터 연산

포인터를 대상으로 증감 연산을 실행할 경우

포인터의 형에 따라 증감의 크기가 결정된다.

예를 들어 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
반응형
SMALL