C언어 - 배열을 함수에게 전달해주는 방법
2020. 11. 12. 10:39ㆍ개인공부/C언어
한 데이터를 여러 함수에서 쓸때 매번 데이터를 복사 해갈경우 시간과 메모리 낭비가 엄청나다.
그 문제를 해결하기 위해 데이터가 첫주소를 알려주어 하나의 메모리로, 하나의 데이터 덩어리로
다른 함수들이 사용할수 있다.
함수는 배열을 배열로 받지 않고 포인터로 받는다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
double average(double arr1[], int n )
{
// 배열은 통째로 복사해오는게 아니라
// 포인터로 받아온다.
printf("Size = %zd in function average\n", sizeof(arr1));
double avg = 0.0;
for (int i = 0; i < n; ++i)
{
avg += arr1[i];
}
avg /= (double)n;
return avg;
}
int main() {
double arr1[5] = { 10,13,12,7,8 };
//double arr2[5] = { 1.8, -0.2, 6.3, 13.9, 20.5 };
double arr2[3] = { 1.8, -0.2, 6.3 }; // size is different
printf("Address = %p\n", arr1);
printf("Size = %zd\n", sizeof(arr1));
printf("Address = %p\n", arr2);
printf("Size = %zd\n", sizeof(arr2));
printf("Avg = %f\n", average(arr1, 5));
printf("Avg = %f\n", average(arr2, 3));
return 0;
}
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - const와 배열과 포인터 (0) | 2020.11.12 |
---|---|
C언어 - 포인터 연산 총정리 (0) | 2020.11.12 |
C언어 - 2차원 배열과 메모리 (0) | 2020.11.11 |
C언어 - 포인터와 배열 (0) | 2020.11.11 |
C언어 - 포인터의 산술 연산 (0) | 2020.11.11 |