본문 바로가기
공공일자리 공식취업지원 플랫폼 · work.or.kr
FAQ 고객센터 사이트맵 English 접속자 221
통합 검색

<h2 class='post-title'>구조체와 함수의 연계: C언어 프로그래밍의 기초</h2>

profile_image
작성자 관리자메일보내기 이름으로 검색
댓글 0건 조회 373회 작성일 26-09-17 00:00

✅ 오늘의 핵심 메시지

구조체도 함수의 매개변수로 전달할 수 있습니다. 함수와 구조체를 연결하면 진정한 프로그램 구조가 만들어집니다.

✅ 오늘의 목표

구조체를 함수에 전달하는 방법, 값 전달과 포인터 전달의 차이를 이해하고, 함수로 구조체 데이터를 처리하는 방법을 배워봅시다.

우리는 구조체를 이렇게 사용했습니다:

struct Student {
    char name[20];
    int score;
};

s1.score를 통해 직접 접근 방식을 사용하고, 함수를 통해 구조체를 연결할 수 있습니다.

구조체를 함수로 전달할 수 있습니다:

#include <stdio.h>
struct Student {
    char name[20];
    int score;
};

void printStudent(struct Student s) {
    printf("%s %d\n", s.name, s.score);
}

int main() {
    struct Student s1 = {"Kim", 95};
    printStudent(s1);
    return 0;
}

이렇게 하면 함수로 구조체 복사 전달이 가능합니다. 함수 안에서 사용이 가능하며, 함수에서 구조체 값을 변경할 수 있습니다.

구조체 포인터 전달을 통해 원본을 직접 수정하려면 주소 전달을 사용해야 합니다:

#include <stdio.h>
struct Student {
    int score;
};

void change(struct Student *p) {
    p->score = 100;
}

int main() {
    struct Student s1 = {50};
    change(&s1);
    printf("%d\n", s1.score);
    return 0;
}

이번 결과는 100으로 원본 데이터 변경에 성공했습니다.

실전에서는 포인터 전달을 많이 사용합니다. 구조체 배열과 함수를 활용하여 여러 데이터를 처리할 수 있습니다:

#include <stdio.h>
struct Student {
    char name[20];
    int score;
};

void printAll(struct Student s[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%s %d\n", s[i].name, s[i].score);
    }
}

int main() {
    struct Student arr[3] = {{"Kim", 90}, {"Lee", 80}, {"Park", 100}};
    printAll(arr, 3);
    return 0;
}

이러한 구조는 실제 프로그램에서 데이터와 함수의 조합으로 동작합니다.

평균 계산 함수를 만들어 보겠습니다:

#include <stdio.h>
struct Student {
    int score;
};

float average(struct Student s[], int size) {
    int total = 0;
    for (int i = 0; i < size; i++) {
        total += s[i].score;
    }
    return total / (float)size;
}

int main() {
    struct Student arr[3] = {{90}, {80}, {100}};
    printf("평균: %.1f\n", average(arr, 3));
    return 0;
}

구조체를 반환하는 방법도 있습니다:

#include <stdio.h>
struct Point {
    int x;
    int y;
};

struct Point createPoint() {
    struct Point p = {10, 20};
    return p;
}

int main() {
    struct Point p1;
    p1 = createPoint();
    printf("%d %d\n", p1.x, p1.y);
    return 0;
}

⚠️ 자주 하는 실수

포인터인데 .을 사용하는 것, 포인터는 ->를 사용해야 합니다. 올바른 코드는 p->score입니다.

퀴즈: 다음 코드의 결과는 무엇일까요?

struct Data {
    int num;
};
void test(struct Data *p) {
    p->num = 50;
}
int main() {
    struct Data d = {10};
    test(&d);
    printf("%d", d.num);
}

정답은 B번 (50)입니다.

오늘 정리하자면, 구조체를 함수에 전달할 수 있고, 포인터 전달 시 원본 수정이 가능합니다. 구조체 배열과 함수는 실전 핵심 구조입니다.

실제 프로그램 형태에 가까워지는 단계입니다.

워크넷은 공공일자리와 취업지원의 중심입니다. 다양한 기업 광고와 구직 정보를 제공하여 여러분의 성공적인 경로를 지원합니다.

글제목

#C언어 #프로그래밍 #구조체 #함수 #코딩기초 #일자리 #취업지원 #워크넷 #프로그래밍기초 #C언어독학

구조체와 함수의 연계
구조체와 함수를 통해 데이터 처리의 효율성을 높이세요. 포인터를 활용하여 원본 수정이 가능합니다.

등록된 댓글이 없습니다.