본문 바로가기
카테고리 없음

배열과 함수, 인자

by 노아론 2017. 3. 9.

배열은 함수의 인자로 전달되어 사용될수없다. 따라서 배열이 아닌, 포인터를 통해 함수의 인자를 전달해주어야한다. ;포인터는 주소값을 전달해주는 기능을 하기에 가능함을 알고있다.


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이 인자가 된다.

댓글