struct student{ int number; char name[10]; double grade; }
struct : 구조체 정의 키워드
struct student : 구조체의 이름 (태그)
int number;
char name[10];
double grade; : 구조체의 멤버
구조체 정의(선언)와 구조체의 변수 선언은 다름
struct student
{
int number;
char name[10];
double grade;
}
= 구조체 정의
int main (void)
{
struct student s1;
}
= 구조체 변수 선언
struct student
{
int number;
char name[10];
double grade;
};
struct student s1={24,"KIM",4.3};
s1.grade = 3.8;
s1 = 구조체 변수
grade = 구조체 멤버
예제 1)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int number;
char name[10];
double grade;
}; /*구조체 선언*/
int main(void) {
struct student s;
s.number = 2021111263;
strcpy(s.name, "홍길동");
s.grade = 4.3;
printf("학번 : %d\n", s.number);
printf("이름 : %s\n", s.name);
printf("학점 : %f\n", s.grade);
return 0;
}
예제 2)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
int number;
char name[10];
double grade;
}; /*구조체 선언*/
int main(void) {
struct student s;
printf("학번을 입력하시오 : ");
scanf("%d", &s.number);
printf("이름을 입력하시오 : ");
scanf("%s", &s.name);
printf("학점을 입력하시오 : ");
scanf("%lf", &s.grade);
printf("학번 : %d\n", s.number);
printf("이름 : %s\n", s.name);
printf("학점 : %f\n", s.grade);
return 0;
}
예제)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 3
struct student {
int number;
char name[20];
double grade;
};
int main(void)
{
struct student list[SIZE];
int i;
for (i = 0; i < SIZE; i++)
{
printf("학번을 입력하시오: ");
scanf("%d", &list[i].number);
printf("이름을 입력하시오: ");
scanf("%s", list[i].name);
printf("학점을 입력하시오(실수): ");
scanf("%lf", &list[i].grade);
}
for (i = 0; i < SIZE; i++)
printf("학번: %d, 이름: %s, 학점: %f\n", list[i].number, list[i].name, list[i].grade);
return 0;
}
예제)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 3
struct student {
int number;
char name[20];
double grade;
};
int main(void)
{
struct student s = { 24,"KIM", 4.3};
struct student* p;
p = &s;
printf("학번=%d 이름=%s 학점=%f \n", s.number, s.name, s.grade);
printf("학번=%d 이름=%s 학점=%f \n", (*p).number, (*p).name, (*p).grade);
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdio.h>
struct student {
int number;
char name[20];
double grade;
};
int main(void)
{
struct student s = { 123456789, "홍길동", 4.3 };
struct student* p;
p = &s;
printf("학번=%d 이름=%s 학점=%f \n", s.number, s.name, s.grade);
printf("학번=%d 이름=%s 학점=%f \n", (*p).number, (*p).name, (*p).grade);
printf("학번=%d 이름=%s 학점=%f \n", p->number, p->name, p->grade);
return 0;
}
union example { char c; int i; }
enum days {SUN,MON,TUE};
enum = 열거형 정의 시 사용하는 키워드
days = 열거형 이름 (태그)
예제)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
enum days {SUN, MON, TUE, WED, THU, FRI, SAT};
const char* days_name[] = { "sunday", "monday", "tuesday", "wednesday",
"thursday", "friday", "saturday" };
int main(void) {
enum days d;
d = WED;
printf("%d번째 요일은 %s입니다\n", d, days_name[d]);
return 0;
}
typedof unsigned char BYTE;
typedof = 새로운 자료형 BYTE로 정의
unsigned char = 기존의 자료형
BYTE = 새로운 자료형