구조체와 함수
구조체를 함수의 인자나 값으로 사용할 수 있는데, 이때는 "값에 의한 호출"이 원칙이다.
[값에 의한 호출 예시]
#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;
}
'2학년 2학기 > c언어' 카테고리의 다른 글
11-6장 구조체와 포인터 (0) | 2024.11.11 |
---|---|
11-5장 const struct (0) | 2024.11.11 |
11-3장 구조체 배열 (0) | 2024.11.11 |
11-2장 구조체 변수의 대입과 비교 (0) | 2024.11.11 |
11-1장 구조체 (0) | 2024.11.11 |