구조체

// 값을 리턴하는 경우
USERDATA GetUserData(void) {
	USERDATA user = { 0 };
	.
	.
	.
	
	return user;
}

// 주소 값을 받아서, 멤버에 접근하는 경우 필요한 정보만 수정
void GetUserData(USERDATA* pUser) {
	USERDATA user = { 0 };
	.
	.
	.
	
	return ;
}

// 구조체를 사용하는 가장 일반적인 예제
int main(void) {
	USERDATA user = { 0 };
	
	GetUserData(&user);
	printf(%d%t%t, user.age, user.name, use.szPhone)
	
	return 0;
}

구조체와 함수(매개변수, 반환 자료)

구조체를 멤버로 갖는 구조체

[실습] 자기 참조 구조체와 재귀 호출


#include <stdio.h>

typedef struct USERDATA
{
    char szName[32];
    char szPhone[32];
    struct USERDATA* pNext;
} USERDATA;

void node(USERDATA* user) {
    while (user != NULL) {
        printf("%s\\n", user->szName);
        user = user->pNext;
    }
}

int main() {
    USERDATA userList[5] = {
        { "김두식", "1234", NULL },
        { "이미현", "2345", NULL },
        { "김봉석", "3456", NULL },
        { "장희수", "4567", NULL },
        { "김영수", "4567", NULL }
    };
    
    int size = sizeof(userList) / sizeof(USERDATA);
    
    for (int i = 0; i < size - 1; i++) {
        userList[i].pNext = &userList[i+1];   
    }

    node(&userList[0]);
    
    return 0;
}

비트필드