구조체
-> 사용자 정의 자료형이다.
-> 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 |