포스트

함수

함수

함수

함수 return 방식

  1. Call by value
    값 복사
  2. 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;
}