개발/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