배열은 함수의 인자로 전달되어 사용될수없다. 따라서 배열이 아닌, 포인터를 통해 함수의 인자를 전달해주어야한다. ;포인터는 주소값을 전달해주는 기능을 하기에 가능함을 알고있다.
main함수에서의 arr이란 배열을 function이란 함수로 옮긴다면 arr배열 자체를 function(arr);로 하는것이 불가능하기에,
포인터로 배열을 지정해 인자를 전달한다.
여기서 중요한것은, 전달받은 함수의 인자에 ex) function(int * man) , 즉 *을 붙여 포인터로서의 지정주소에서 내가 원하는 값을 불러낼수있게 해야한다.
아래는 예제이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> void how(int * man, int rule) { for (int i = 0; i < rule; i++) { man[i] += 2; printf("%d", man[i]); } } int main(void) { int arr[5] = { 1,2,3,4,5 }; how(arr, sizeof(arr) / sizeof(int)); getchar(); } | cs |
how(int * man~~~)에서 *을 붙여 포인터의 역할을 하게끔 만들어주었다.
이로서 how함수에서의 man[]은 main함수의 arr[]의 역할이 가능하다,
또한, int * man의 꼴을 int man[]로 바꿀 수 있다.
허나, 이러한 선언이 허용되는것은 매개변수의 선언으로 제한된다.
* 매개변수란??
==> main함수에서 넘어가 다른함수에서의 헤더 부에서의 변수;쉽게말해 funtion(int A,int B) 여기서의 A와 B가 매개변수다.
인자 는???
==> main함수에서 다른함수를 호출할때 ( ) 안에 있는 변수.; how(arr,~~~);에서 arr이 인자가 된다.
댓글