포인터와 배열

배열의 이름은 상수 형태의 포인터. 그래서 배열의 이름을 가리켜 포인터 상수라 부르기도 한다

배열의 이름도 포인터이기 때문에 배열의 이름을 피연산자로 하는 *연산이 가능.

1차원 배열이름의 포인터 형은 배열의 이름이 가리키는 대상을 기준으로 결정.

(예제1)

 


 

 

int *

p

int [ ]

arr

 

int *p;

int arr[3];

p[]

*arr

&arr[1]==*(arr+1)

(예제2)

 

 

상수형태 문자열을 가리키는 포인터.

변수 형태 문자열

char str1[] = "My String"; //스택영역에 저장

상수 형태의 문자열

char * str2 = "Your String"; //코드영역에 저장

(예제1)

 (예제2)

문자열 배열 입력

(예제1)

포인터 변수로 이뤄진 배열 : 포인터 배열

(예제1)

 (예제2)

 

(예제3)(char*strArr[3]={0x1004,0x1048,0x2012})


포인터와 함수에 대한 이해

함수의 인자로 배열 전달. 배열은 함수인자로 넘길 수 없다. 매개변수로 배열을 선언할 수 없기때문에 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야 한다. 

고로 포인터를 써서 넘겨야 한다.



배열을 함수의 인자로 전달받는 함수의 또 다른 선언

(예제1)


call-by-value : 값을 전달하는 형태의 함수호출

 



call-by-reference : 주소 값을 전달하는 형태의 함수호출