해당 글은 개인 공부 정리를 위해 작성되었습니다.
인자 전달 방식
call by value : 함수를 호출할 때 단순히 값을 복사해서 전달하는 함수호출
코드 결과는 다음과 같이 출력되었다 -> 변수 값 교환 불가
c : 100 , d : 200
c : 100 , d : 200
#include <stdio.h>
void swap(int, int);
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main(void)
{
int c = 100, d = 200;
printf("1 %d %d\r\n ", c, d);
swap(c, d);
printf("2 %d %d", c, d);
return 0;
}
call by reference(call by address) : 변수의 값을 전달하는 것이 아닌, 주소값을 전달하는 함수 호출
코드 결과는 다음과 같이 출력되었다 -> 변수 값 교환 가능
c : 100 , d : 200
c : 200 , d : 100
#include <stdio.h>
void swap(int*, int*);
void swap(int* a, int * b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main(void)
{
int c = 100, d = 200;
printf("c : %d d : %d\n ", c, d);
swap(&c, &d);
printf("c : %d d : %d", c, d);
return 0;
}
함수 인자로 배열 전달
매개변수 형태
1. 반환형 함수이름(자료형 매개변수[])
{
}
2. 반환형 함수이름(자료형 *매개변수)
{
}
아래 함수 인자로 배열 전달하는 예제이다.
출력 결과 :
10 20 30 40 50
11 21 31 41 51
13 23 33 43 53
16 26 36 46 56
#include <stdio.h>
void ShowArray(int * param, int len)
{
for(int i=0; i<len; i++) printf("%d ", param[i]);
printf("\n");
}
void AddArray(int param[], int len, int add)
{
for(int i=0; i<len; i++) param[i] += add;
}
int main(void)
{
int arr[] = {10, 20, 30, 40, 50};
int len = sizeof(arr) / sizeof(int);
ShowArray(arr, len); //10 20 30 40 50
AddArray(arr, len, 1);
ShowArray(arr, len); //11 21 31 41 51
AddArray(arr, len, 2);
ShowArray(arr, len); //13 23 33 43 53
AddArray(arr, len, 3);
ShowArray(arr, len); //16 26 36 46 56
return 0;
}
'프로그래밍 언어 > c(일반)' 카테고리의 다른 글
포인터(5) - 다중 포인터(이중포인터 위주) (0) | 2024.07.12 |
---|---|
포인터(4) - 함수 포인터 & 사용 예시 정리 (0) | 2024.07.12 |
포인터(2) - 포인터 배열 / 배열 포인터 (0) | 2024.07.11 |
extern 구조체 또는 변수 사용법 및 예시 (0) | 2024.05.08 |
static 정적 변수 (0) | 2024.05.07 |