구조체

-> 사용자 정의 자료형이다.

-> int, float, double 같은 자료형들은 기본 자료형이다.

-> 사용자 정의 자료형이라고 해서 몇 byte 크기만큼 어떤식으로 읽을 수 있게 만들 수 없다.

-> 기존에 있던 자료형들을 모아서 데이터 덩어리 형태로 만든다.

-> 데이터 집합이라고 생각하면된다.

 

구조체의 형태

struct 자료형이름
	{	// 여기부터

		기본 자료형 + 변수명
		기본 자료형 + 변수명
		기본 자료형 + 변수명

	}

구조체 변수 선언

struct 자료형	변수명;
struct tagInfo	tInfo;

 

구조체의 멤버 접근

-> 구조체의 멤버에 접근하는 방법은 연산자를 사용한다.

.(dot) 연산자

struct tagInfo			tInfo = { "AAA", 10, 20, 30 };
cout << tInfo.szName << endl;
cout << tInfo.iKor << endl;
cout << tInfo.iEng << endl;
cout << tInfo.iMath << endl;
cout << tInfo.iTotal << endl;
cout << tInfo.fAver << endl;

 

구조체의 멤버 변수 대입

구조체의 멤버 변수의 값을 변경하려고 하는데 정수 값은 바뀌지만 문자는 바뀌지 않는다. 왜 그럴까?

이유는 문자 배열이기 때문에 즉, 주소를 다루기 때문이다.

 

문자 배열은 상수이기 때문에 일반 형식으로 대입이 불가능하다.

 

하지만 strcpy_s를 사용으로 변경은 가능하다.

 

typedef

-> type(타입) define(정의하다)

-> 자료형을 다른 이름으로 재 정의 한다.

-> 자료형에 별명을 붙여서 사용한다는 의미.

 

장점

-> 긴 자료형을 줄여서 사용할 수 있다.

-> 유지보수가 좋다.

예를 들어 short 자료형을 int 자료형으로 바꾸는 작업을 할 때 다음과 같이 편리하게 할 수 있다.

typedef		자료형	별명
typedef		short 	_short;

_short	iB = 20;
typedef		자료형  별명
typedef		int 	   _int;

_int	iB = 20;

 

C구조체와 C++구조체의 차이점
-> struct 키워드 내부에 typedef이 정의되어 있는지 여부
-> C에서는 struct tagInfo 라고 자료형을 지어야 한다.
-> C++에서는 tagInfo로 자료형을 지을 수 있다.

 

struct나 class에서 초기화 값 변경을 바꾸려고 const 멤버 변수를 쓰지 않는다.

참조(&) 멤버변수의 경우도 마찬가지

'Programming > C++ Basic' 카테고리의 다른 글

C++ 동적 할당(C, C++기반), malloc, calloc  (0) 2020.09.01
C++ 구조체와 포인터  (0) 2020.08.31
C++ 문자열 함수  (0) 2020.08.31
C++ 문자 배열과 문자열 상수  (0) 2020.08.28
C++ 2차원 배열  (0) 2020.08.28

+ Recent posts