함수
함수
함수
함수 return 방식
- Call by value
- 값 복사
- Call by reference
- 포인터를 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
void get_Call_by_value(int a) {
a = 10;
return a;
}
void get_Call_by_reference(int *a, int *b) {
*a = 10;
*b = 20;
}
int main() {
int x, y;
get_Call_by_value(x);
printf("X: %d\n", x);
get_Call_by_reference(&x, &y);
printf("x: %d, y: %d\n", x, y);
return 0;
}
- main 함수
- entry 포인트
Caller, Callee
함수는 기본적으로 전역 파일 범위 제한 하려면 static 키워드 사용
함수 오버로딩
c 가능, c++ 불가
가변인자
stdarg.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdarg.h> // 가변인자 처리에 필요한 헤더
int sum(int count, ...) {
va_list args; // 가변인자 목록 선언
int total = 0;
va_start(args, count); // 가변인자 목록 초기화
for (int i = 0; i < count; i++) {
total += va_arg(args, int); // 가변인자에서 int 타입 값 추출
}
va_end(args); // 가변인자 목록 종료
return total;
}
int main() {
printf("Sum of 1, 2, 3: %d\n", sum(3, 1, 2, 3));
printf("Sum of 10, 20, 30, 40: %d\n", sum(4, 10, 20, 30, 40));
return 0;
}
함수 호출시 argument(인수) Caller 입장 함수 내에서 parameter(매개변수) Callee 입장
argc와 argv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
int main(const int argc, const char* argv[]) {
printf("%d\n", argc); // 인자 수 + 1
printf("%s\n", argv[0]); // 파일 이름
printf("%s\n", argv[1]); // 첫번째 인자
printf("%s\n", argv[2]); // 두번째 인자
// ex) 다 출력
for(int i = 0;i < argc;i++){
printf("%s\n", argv[i]);
}
return 0;
}