언어/C

[C언어] 주소, 포인터, 배열

qkrgusqls 2023. 3. 24. 09:35

 

c언어 포인터

지금 까지 배운 것중에 가장 이해가 안돼서 정리

 

 

포인터란?

 

c언어에서 변수가 존재하는 위치(주소값)를 저장하는 변수

type*pointer;

 

int * pa = &a;

(4바이트의 영역을 int type의 변수로 취급 가능)

 

*pa는 포인터

&a; 주소 - 주소를 얻는 방법은 변수 앞에 & 붙이기

주소값은 정확히 한지점을 가르킴

 

*&는 서로 상쇄되는 관계

 


배열이란?

시작과 끝이 있는 (길이가 있는), 같은 타입이 연속되는 자료구조

배열 크기는 항상 상수로 사용

int arr[10]; 40 바이트의 연속(4*10)


int*pa =&a; 주소로 지정

int arr[5];

5의 배열을 같는 정수형 arr

[]안은 길이를 의미


포인터 연산

 

ex)

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

printf("%d\n",pa-1);

int 형이 포인터기 때문에 pa와 pa-1은 4바이트 차이가 난다.

 

 

 

p의 주소값은 a

10 *p

20 *(p+1)

30 *(p+2)

40 *(p+3)

50 *(p+4)

출력

 

*p = p[0]


 

 

입력 받은 순서와 반대로 출력하기

 

 

 

 

 

arr[]

배열

arr[0] - 괄호 안의 4를 가르킨다.

 

arr[7] -9부터

arr[0] 4까지 배열