[c언어] 구조체와 함수. 함수의 인자로 구조체 변수,포인터,배열을 사용

|



변수나 포인터와 같이 구조체 형 데이터는 함수의 인자로 사용할 수 있으며, 함수의 결과 값으로 구조체를 반환할 수도 있다.

// 함수의 인자로 구조체 변수를 사용

#include <stdio.h>
struct user
{
    char name[20];
    char phone[14];
    int quick;
};
void display_st(struct user data);
int main(void)
{
    struct user d={"김명환", "011-123-4567", 1};
    display_st(d);
    return 0;
}
void display_st(struct user data)
{
    printf("name : %s\n", data.name);
    printf("phone : %s\n", data.phone);
    printf("quick : %d\n", data.quick);
}

// 실행 결과




// 함수의 인자로 구조체 포인터를 사용

#include <stdio.h>
#include <string.h>
struct user
{
    char name[20];
    char phone[14];
    int quick;
};
void display_st(struct user *data);
void change_st(struct user *data);
int main(void)
{
    struct user d={"김명환", "011-123-4567", 1};
    display_st(&d);
    change_st(&d);
    display_st(&d);
    return 0;
}
void display_st(struct user *data)
{
    printf("name : %s\n", data->name);
}
void change_st(struct user *data)
{
    strcpy(data->name, "이진영");
}

// 실행 결과




// 함수의 인자로 구조체 배열을 사용

#include <stdio.h>
struct user
{
    char name[20];
    char phone[14];
    int quick;
};
void display_st(struct user *s, int n);
int main(void)
{
    user d[2]={{"김명환", "011-123-4567", 1},
                     {"이진영", "010-120-5638", 5}};
    display_st(d,2);
    return 0;
}
void display_st(struct user *s, int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("name :%s\n", s[i].name);
        printf("phone :%s\n", (s+i)->phone);
        printf("quick :%d\n", s[i].quick);
        printf("\n");
    }
}

// 실행 결과


  ::