[c] 함수의 인자로 배열 전달하기
#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. 단, 함수의 매개 변수 활용시 사용하는 것입니다. 다른 곳에서 사용하면 오류..