C

C 공부 10일차 Chapter 14 함수와 포인터

yeooniyeoon 2022. 9. 15. 23:58
728x90
SMALL

함수와 포인터

배열은 매개변수로 전달할 수 없다.

따라서 배열을 통째로 넘겨주는 것은 불가능하다. 

대신 함수에서 배열에 접근하기 위해서는 배열의 주소값을 전달받는다.

 

 

 

함수의 매개변수로 배열 전달받는 방법

함수의 매개변수로 배열을 선언받을 경우 두가지 방법이 있다.

첫번째는 포인터로 전달받는 방식

 

int func1(int * ptr1){
	...
}

 

 

두번째는 배열형태로 전달받는 방식이다.

 

int func2(int ptr[]){
	...
}

 

 

이 두 방식은 매개변수 선언 시에만 동일한 의미로 해석된다.

함수의 매개변수 선언 시에만 int prt[] == int * ptr 이라는 것이다.

 

 

 

 

매개변수로 전달받은 배열의 길이

함수의 매개변수로 배열의 주소를 받을 경우에는

배열의 길이를 같이 전달해줘야 한다.

 

void func(int * arr, int len){
	sz = sizeof(arr);
}

 

위 코드를 실행 시 변수 sz에 저장되는 값은 arr에 전달된 배열의 길이가 아닌

포인터 변수 arr에 저장된 주소값의 길이이다.

 

매개변수로 전달받은 값은 배열의 주소값이므로 sizeof를 통해 배열의 길이 계산이 불가하기 때문에

함수 호출 시 배열의 길이를 전달받아야 하는 것이다.

728x90
반응형
SMALL