2학년 2학기/c언어
11-4장 구조체와 함수
kkkkk1023
2024. 11. 11. 10:44
구조체와 함수
구조체를 함수의 인자나 값으로 사용할 수 있는데, 이때는 "값에 의한 호출"이 원칙이다.
[값에 의한 호출 예시]
#include <stdio.h>
#include <string.h>
int equal(struct student s1, struct student s2)
{
if (strcmp(s1.name, s2.name) == 0)
return 1;
else
return 0;
}
struct student {
int number;
char name[10];
double grade;
};
int main(){
struct student s1 = { 25, "Mun", 3.92 };
struct student s2 = { 26, "KiM", 3.76 };
printf("%d", equal(s1, s2); // 0
}
물론, 참조에 의한 호출로도 변경할 수가 있는데 해당 경우에는 함수에 포인터를 사용해주고, 구조체를 넘겨줄 때도 주소연산자(&)를 이용해서 전달해야한다.
[참조에 의한 호출 예시]
#include <stdio.h>
#include <string.h>
struct student {
int number;
char name[10];
double grade;
};
int equal(struct student *s1, struct student *s2) {
if (strcmp((*s1).name, (*s2).name) == 0)
return 1;
else
return 0;
}
int main() {
struct student s1 = { 25, "Mun", 3.92 };
struct student s2 = { 26, "KiM", 3.76 };
printf("%d", equal(&s1, &s2)); // 0
return 0;
}