Programming/C++

[c] 함수의 인자로 배열 전달하기

OKOK 2017. 5. 14. 13:16

#include<stdio.h>



void fct(int *arr2);


int main(void)

{

int arr1[2] = { 1,2 };

fct(arr1);

printf("%d\n", arr1[0]);

return 0;

}


void fct(int *arr2)

{

printf("%d\n", arr2[0]);

arr2[0] = 3;

}


1. 함수 오랜만에 본다..

2. 어레이를 선언하고 초기화 했는데 함수에서는 포인터 형태의 매개변수를 사용하네?

3. 배열 이름은 첫 번째 요소의 주소 값을 의미하는 상수 포인터이다...

4. 그래서 fct 함수의 매개 변수 타입이 int 형 포인터이다.


#include<stdio.h>


int ArrAdder(int* pArr, int n);


int main(void)

{

int arr[10] = {1,2,3,4,5,6,7,8,9,10 };

int SumOfArr;


printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);

SumOfArr = ArrAdder(arr, sizeof(arr) / sizeof(int));

printf("total : \n", SumOfArr);

return 0;

}


int ArrAdder(int* pArr, int n)

{

int sum = 0;

int i;


for (i = 0; i < n; i++)

sum+=pArr[i];

return sum;



1. 집중해서 봤는데 왜 안나오는지 잘 모르겠다... 원하는 값이

2. 배열 길이를 구하는 것 sizeof 는 총바이트 수를 나타내므로 할당된 바이트수를 자료형 바이트 수로 나누면 길이가 나온다. 이 길이는 상식적으로 생각하는 대입된 요소의 개수를 의미한다. 메모리 기준, 요소 기준 차이.


#include<stdio.h>


int MaxVal(int pArr[], int n);


int main(void)

{

int arr[10] = { 4, 8, 3, 7, 2 };

int max;

max = MaxVal(arr, sizeof(arr) / sizeof(int));

printf("Max val: %d\n", max);

}


int MaxVal(int pArr[], int n)

{

int max, i;

max = pArr[0];


for (i = 1; i < n; i++)

{

if (max < pArr[i])

max = pArr[i];

}

return max;

}


1. 이것은 되네. 전 것 은 안됬는데

2. 여기서 int pArr[] 이랑 int *pArr 은 완전히 같은 것이랍니다.

3. 단, 함수의 매개 변수 활용시 사용하는 것입니다. 다른 곳에서 사용하면 오류..