본 내용은 어소트락 무료 강의 <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;
}