구조체
구조체는 여러 자료형의 변수들을 묶어서 하나의 변수처럼 사용하게 하는 사용자 정의 자료형입니다. 기본 자료형인 int, char, float 등을 사용한 변수에는 각 자료형에 해당하는 값만을 저장하는 반면 구조체 변수는 다양한 자료형 값을 묶어서 저장합니다.
구조체 정의 형식 | struct 구조체명{ 자료형1 멤버_변수명1; ...; }; |
구조체 변수 선언 형식 | struct 구조체명 구조체변수명; |
다음과 같이 구조체를 정의와 함께 선언을 할 수도 있습니다.
구조 정의와 변수 선언 형식 |
struct 구조체명{ 자료형1 멤버_변수명1; ...; }구조체_변수명1, ..., ; |
ex) 학생의 이름, 학번, 성적을 선언하는 구조체
구조체 정의 후 변수 선언 |
구조체 정의와 동시에 변수를 선언 |
struct student { char name[20]; int id; int gpa; }; struct student stu_1; struct student stu_2; |
struct sdudent { char name[20]; int id; int gpa; }stu_1,stu_2; |
■ 구조체 변수 접근
구조체 변수의 구조체 멤버 변수를 사용하기 위해서는 구조체 멤버 변수에 접근을 해야 합니다. 멤버 연산자 . 을 사용하여 구조체 멤버 변수에 접근할 수 있습니다. 구조체 멤버 변수에 접근하기 위한 기본 형식음 다음과 같습니다.
구조체 멤버 변수 접근 형식 |
구조체변수명.멤버명 |
구조체 변수의 초기화
더 빠른 방법으로 구조체 변수를 선언함과 동시에 초기화하여 사용을 할 수 있습니다.
구조체 변수 초기화 형식 |
struct 구조체명 구조체변수명 = {멤버_변수_초기값1, ... }; |
또한 구조체 정의, 변수선언, 초기화를 동시에 할 수도 있습니다. 하지만 구조체 멤버 변수를 초기화 할 때는
- 구조체 멤버 변수를 초기화 할 때 초깃값의 순서는 구조체에 나열된 멤버 변수 순서와 동일해야 한다.
- 구조체를 정의함과 동시에 구조체 멤버 변수를 초기화할 수 없다.
- 구조체 선언을 먼저 한 다음에 {} 를 사용하여 구조체 멤버 변수를 초기화할 수 없다.
다음과 같은 내용을 주의해야 합니다.
ex) 개인 신체 정보 struct 구조 사용하기
# include <stdio.h>
struct information {
int num;
int age;
int height;
int weight;
};
int main(void){
struct information n1={1,20,175,65
};
struct information n2={2,21,180,70
};
printf("후보%d\n",n1.num);
printf("age : %d\n",n1.age);
printf("height : %d\n",n1.height);
printf("weight : %d\n\n",n1.weight);
printf("후보%d\n",n2.num);
printf("age : %d\n",n2.age);
printf("height : %d\n",n2.height);
printf("weight : %d",n2.weight);
}
※ result
후보1
age : 20
height : 175
weight : 65
후보2
age : 21
height : 180
weight : 70
ex) 위의 예제를 정의와 동시에 선언하기
# include <stdio.h>
struct information {
int num;
int age;
int height;
int weight;
} n1={1,20,175,65},n2={2,21,180,70};
int main(void){
printf("후보%d\n",n1.num);
printf("age : %d\n",n1.age);
printf("height : %d\n",n1.height);
printf("weight : %d\n\n",n1.weight);
printf("후보%d\n",n2.num);
printf("age : %d\n",n2.age);
printf("height : %d\n",n2.height);
printf("weight : %d",n2.weight);
}
※ result
후보1
age : 20
height : 175
weight : 65
후보2
age : 21
height : 180
weight : 70
struct 구조체를 이용하는 방법은 상당히 중요합니다. 자료를 간결하게 만들어 줄 뿐아니라 반복되는 여러 멤버를 쉽게 정의하고 사용을 할 수 있게 만들어 주기 때문입니다. 따라서 다양한 방법으로 구조체와 익숙해지도록 해야합니다.
Exercise
학생을 나타내는 구조체 student는 학번, 이름, 나이, 성적으로 구성된다. 10명의 학생 정보를 입력받아 나이가 25이하인 학생을 찾아서 출력하는 프로그램을 작성하라.
#include <stdio.h>
struct student {
int id;
char name[20];
int age;
float gpa;
};
int main(void){
int i;
int n=1;
struct student s[n];
for(i=0;i<n;i++){
printf("학번 이름 나이 성적 순으로 입력 : ");
scanf("%d %s %d %f",&s[i].id,&s[i].name,&s[i].age,&s[i].gpa);
}
for (i=0;i<n;i++){
if (s[i].age<=25)
printf("id : %d\nname : %s\nage : %d\ngpa : %.1f\n\n",s[i].id,s[i].name,s[i].age,s[i].gpa);
}
}
※ result
학번 이름 나이 성적 순으로 입력 : 123456789 홍길동 23 4.0
id : 123456789
name : 홍길동
age : 23
gpa : 4.0
'컴퓨터 프로그래밍 > c 언어 (c programming language)' 카테고리의 다른 글
C 언어 - 연습문제1 (0) | 2020.09.27 |
---|---|
C 언어 - random (0) | 2020.09.27 |
C 언어 - 포인터(Pointer) (0) | 2020.09.27 |
C 언어 - 배열(Arrangement) (0) | 2020.09.27 |
C 언어 - 함수 (0) | 2020.09.27 |
댓글