<h2 class='post-title'>구조체와 함수의 연계: C언어 프로그래밍의 기초</h2>
✅ 오늘의 핵심 메시지
구조체도 함수의 매개변수로 전달할 수 있습니다. 함수와 구조체를 연결하면 진정한 프로그램 구조가 만들어집니다.
✅ 오늘의 목표
구조체를 함수에 전달하는 방법, 값 전달과 포인터 전달의 차이를 이해하고, 함수로 구조체 데이터를 처리하는 방법을 배워봅시다.
우리는 구조체를 이렇게 사용했습니다:
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언어독학
- 이전글스마트폰으로 국민내일배움카드 신청하는 법 26.09.16
- 다음글군포시청 일자리 홈페이지 및 취업지원 서비스 안내 26.09.17
등록된 댓글이 없습니다.
