본문 바로가기
2학년 2학기/c언어

11-4장 구조체와 함수

by kkkkk1023 2024. 11. 11.

구조체와 함수

구조체를 함수의 인자나 값으로 사용할 수 있는데, 이때는 "값에 의한 호출"이 원칙이다. 

 

 

[값에 의한 호출 예시]

#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