C++ (7) - 배열, 구조체
본 내용은 어소트락 무료 강의 <C/C++ 무료강의>을 기반으로 공부한 내용을 정리한 것이다. 틀린 내용이 있을 수도 있음.
배열
기본 문법
배열 기본 문법
int iArray[10] = {}; // [10] : int 자료형 10묶음
// "iArray"라는 이름의 배열이 생성
// {} : 각 묶음의 초기값이 모두 '0'
int iArray2[10] = {1, 2, 3, 4, 5, 6}; // 나머지 7,8,9,10은 자동으로 초기값 '0'이 적용된다.
Index 접근법
개별 변수 접근법 (Index 접근법)
iArray[4] = 10; // [] : Index -> 0 ~ 9
// [] : 4번째 Index = 5번째칸
iArray[10] = 10; // 오류? => 항상 난다고는 할 수 없음. 배열 특징과 관련있다.
// 11번째칸인 Index 10에 엉뚱하게 변수값이 들어가버릴 수 있다.
배열의 특징과 주의점
메모리 구조가 연속적이다. 그래서 선언한 영역 외에 변수에 이상한 값이 들어갈 수 있음.
구조체 (여기부터는 C문법 기반, C++과의 차이점을 위주로 공부)
구조체 : 사용자 정의 자료형 (User Defining Data Type) 문법에서 기본으로 제공하는 자료형이 아닌 자신만의 자료형을 만들 때 사용
정리 내용 코드
typedef struct _tagMyST //
{
int a; // 실체 x, 이런 형태의 변수가 이 자료형 안에 있다.
float f; // 실체 x, 이런 형태의 변수가 이 자료형 안에 있다.
}MYST;
typedef struct _tagBig // 핵심 키워드 : struct(구조체), typedef(타입 재정의)
{
MYST k; // 구조체가 다른 구조체의 자료형이 될 수 있다. 이런식으로 확장 가능
int i;
char c;
}
typedef int INT;
int main()
{
// 구조체
MYST t;
t.a = 10;
t.f = 10.2312f;
int iSize = sizeof(MYST) // 구조체 바이트 크기 = int + float = 8
struct _NewStruct s; // C에서는 struct라고 명시를 해주어야 알아 듣는다. -> C++에서 보완해서 재정의시 맨 앞에서 재정의 typedef를 붙여버린다.
INT a; // 컴파일러가 INT도 int로 받아들임. (구조체 내에서 INT를 int로 재정의)
return 0;
}
int main()
{
MYST t = {100, 3.14f}; // 구조체 초기화(초기값 설정) => 배열 초기화와 비슷한 원리
t.a = 10; // 여기서 선언 시 이 값들이 구조체에 들어감.
t.f = 10.2312f; // 여기서 선언 시 이 값들이 구조체에 들어감.
int iSize = sizeof(MYST); // 구조체 Byte 크기 => 구조체 함수 내 자료형 크기로 예측가능
return 0;
}