C언어 - 배열 매개변수와 const
2020. 11. 12. 11:57ㆍ개인공부/C언어
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void print_array(const int arr[], const int n) {
for (int i = 0; i < n; ++i)
printf("%d ", arr[i]);
printf("\n");
}
void add_value(int arr[],const int n, const int val) {
int i;
for (i = 0; i < n; i++)
arr[i] += val;
// 메모리 주소에 직접 값을 넣어주기때문에
// return값이 없어도 return과 비슷한 기능을 한다.
}
int sum(const int ar[], const int n) { // 배열값이 변하지 않게 const
int i;
int total = 0;
for (i = 0; i < n; i++)
total += ar[i]; // wrong implementation
return total;
}
int main() {
const int arr[] = { 1,2,3,4,5 };
const int n = sizeof(arr) / sizeof(arr[0]);
print_array(arr, 5);
//1 2 3 4 5
add_value(arr, 5, 100);
print_array(arr, 5);
//101 102 103 104 105
// 배열을 매개변수로 받아오면 point를 쓰는것과 같은 효과
// call by point와 비슷한 효과를 얻을수 있다.
int s = sum(arr, n);
//sum is 515
printf("sum is %d\n", s);
print_array(arr, 5);
//102 103 104 105 106
// sum만 연산하려고 했는데 배열의 값이 변해버렸다.
/// 이유는 sum 함수 안에 total += ar[i] ++; 실수를 했기때문
// const를 붙여준다. int sum(const int ar[], const int n)
// 이후 컴파일 에러난 부분을 고쳐주면 total += ar[i]; 정상작동
// 101 102 103 104 105
return 0;
}
출처 : 홍정모의 따라배우는 C언어
출처 : 홍정모의 따라배우는 C언어
'개인공부 > C언어' 카테고리의 다른 글
C언어 - 포인터의 배열과 2차원 배열 (0) | 2020.11.12 |
---|---|
C언어 - 포인터에 대한 포인터(2중 포인터)의 작동 원리 (0) | 2020.11.12 |
C언어 - const와 배열과 포인터 (0) | 2020.11.12 |
C언어 - 포인터 연산 총정리 (0) | 2020.11.12 |
C언어 - 배열을 함수에게 전달해주는 방법 (0) | 2020.11.12 |