내일배움캠프-언리얼

[내일배움캠프 - 언리얼] DAY 6 - C언어 함수 코드 읽기

이시보 2025. 12. 4. 20:49
#include <stdio.h>
int add(int a, int b) {
    return a + b;
}
int main() {
    printf("합: %d\n", add(3, 7));
    return 0;
}

실행 순서

main 함수 시작

-> printf 의 add 함수

-> add 함수의 a, b 에 3, 7 대입, 10 반환

-> printf의 "합: 10" 출력 후 줄 넘김

-> 프로그램 종료

 

#include <stdio.h>
void checkEvenOdd(int n) {
    if (n % 2 == 0) printf("짝수입니다\n");
    else printf("홀수입니다\n");
}
int main() {
    checkEvenOdd(9);
    return 0;
}

실행 순서

main 함수 시작

-> checkEvenOdd 함수

-> 함수의 n에 9 대입

-> 9/2의 나머지는 0이 아니므로 else의 "홀수입니다" 출력 후 줄 넘김

->프로그램 종료

 

#include <stdio.h>
float average(float a, float b, float c) {
    return (a + b + c) / 3.0f;
}
int main() {
    printf("평균: %.2f\n", average(3.5, 4.0, 5.0));
    return 0;
}

실행 순서

main 함수 시작

-> printf의 average 함수

-> a, b, c에 실수 3.5, 4, 5 대입

-> 12.5 / 3 인 4.166... 반환

-> %.2f 이므로 소수점 2자리까지 "평균: 4.16" 출력 후 줄 넘김

-> 프로그램 종료

#include <stdio.h>
int my_strlen(const char *str) {
    int len = 0;
    while (str[len] != '\0') len++;
    return len;
}
int main() {
    printf("길이: %d\n", my_strlen("hello"));
    return 0;
}

실행 순서

main 함수 시작

-> printf의 my_strlen 함수

-> 입력 string의 첫 번째 글자 주소를 받음

-> 반복문에서 str배열의 0부터 시작해서 값이 \0일 때까지 len에 1씩 더함

-> 5 반환

-> "길이: 5" 출력 후 줄 넘김

-> 프로그램 종료

 

#include <stdio.h>
int max(int a, int b, int c) {
    int m = a;
    if (b > m) m = b;
    if (c > m) m = c;
    return m;
}
int main() {
    printf("최대값: %d\n", max(4, 9, 2));
    return 0;
}

실행 순서

main 함수 시작

-> printf의 max 함수

-> a, b, c에 4, 9, 2 대입

-> a 와 b를 비교해서 큰 값인 9와 c를 비교해서 큰 값인 9를 반환

-> "최대값: 9" 출력 후 줄 넘김

-> 프로그램 종료

 

#include <stdio.h>

int main() {
	int a = 5;
    int* p = &a;
    *p = 20;
    printf("a: %d\n", a);
    return 0;
}

실행 순서

main 함수 시작

-> a에 5값 대입, p에 a의 주소값 대입

-> p값의 주소에 20 대입

-> "a: 20" 출력 후 줄 넘김

-> 프로그램 종료

#include <stdio.h>
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}
int main() {
    int x = 3, y = 7;
    swap(&x, &y);
    printf("x: %d, y: %d\n", x, y);
    return 0;
}

실행 순서

main 함수 시작

-> x에 3, y에 7 대입

-> swap 함수에 x, y의 주소값 대입

-> swap 함수에서 a와 b의 값을 주소로 가진 값끼리 바꿈

-> "x: 7, y: 3" 출력 후 줄 넘김

-> 프로그램 종료

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int sum = 0;
    int *p = arr;
    for (int i = 0; i < 5; i++) {
        sum += *(p + i);
    }
    printf("합: %d\n", sum);
    return 0;
}

실행 순서

main 함수 시작

-> arr 배열에 1, 2, 3, 4, 5 순서대로 대입

-> sum에 0, p에 arr의 주소 대입

-> 0부터 4까지 반복하면서 sum에 *p, *(p+1), ..., *(p+4) 더하기

-> "합: 15" 출력 후 줄 넘김

-> 프로그램 종료