개발/C++기본문법
구조체와 레코드 (struct)
desafinado
2023. 4. 10. 13:29
728x90
구조체란?
구조체는 이미 정의된 서로 다른 자료형들을 구성요소로 하여 새로운 자료형을 만드는것
그루핑은 프로그래밍 하기 편리한 자료를 하나로 묶는것
배열을 사용하면 동일한 자료형들을 한묶음으로 관리할수있음
구조체 선언
struct Man {//구조체 struct man 선언
char name[10];//멤버
int age;//멤버
double wight;//멤버
};
구조체 멤버의 참조와 연산
구조체 변수가 자신의 멤버 name, age, weight를 접근하기 위해서는 . 이나 ->연산자를 사용한다
일반 구조체 변수의 멤버접근
구조체_변수.멤버명;
구조체 포인터 변수의 멤버접근
구조체_포인터_변수-> 멤버명;(포인터 변수에서 사용한다)
화살표 연산자,간접멤버 연산자
구조체 변수가 멤버에 접근하는 예
struct Man minsu;// 일반 변수 선언
struct Man *minjung;//포인터 변수 선언
minsu.age = 13;// 일반변수는 멤버를 .으로 접근
minjung.age ->age = 7;//포인터 변수는 멤버를 ->으로 접근
. 연산자와 ->연산자는 모든 연산자 중 (),[]와 함께 우선순위가 가장높은 연산자이다.
#include <iostream>
struct Man {
char name[10];
int age;
double wight;
};
int main() {
Man gildong, sunhee, comso[160];//구조제를 만들었다
gildong.age = 20;
sunhee.wight = 13.3;
comso[0].age = 25;
std::cout << gildong.age << " " <<sunhee.wight << " " << comso[0].age;//20 13.3 25 가 출력된다
return 0;
}
구조체 선언과 typedef
typedef unsigned int uint;//unsighed int를 unit라는 새로운 자료형으로 정의
uint x;//unsigned int x;와 같은의미
구조체 변수들의 대입연산
typedef struct score {
char hakbun[10];//문자형은 배열의 크기가 선언되어야한다.
//9개의 숫자만 들어갈수있다.마지막인덱스에 문자열의 끝을 나타내는 null 문자('\0')가 들어가기 때문
char name[10];
int kor,eng,tot;//int double은 단일 변수로 배열의 크기를 지정하지 않아도 된다.
double ave;
} SCORE;
int main() {
score h = { "012345678","하니",80,90};//초기값 대입
h.tot = h.kor + h.eng;
h.ave = h.tot / 2.0;
std::cout << h.hakbun << " " << h.name << " " << h.kor << " " << h.eng << " " << h.tot << " " << h.ave;
}//012345678 하니 80 90 170 85가 출력된다
728x90