C++ 복합 데이터 - 배열, 다차원 배열

진경천·2023년 9월 11일
0

C++

목록 보기
10/90

배열 - 자료형[상수]

  • [ ] 안의 상수의 크기만큼 배열의 공간을 할당하고 그 공간 1개의 크기는 자료형의 크기와 같다.
    ex) int a[10]의 크기 = 4 * 10 byte
  • [ ] 안에는 변수가 들어 올 수 없으며 항상 상수만을 받는다.
#include <iostream>

using namespace std;

int main() {
    int num1[]{ 0, 1, 2, 3 };
    int num2[4];

    for (int i = 0; i < size(num1); i++)
        cout << num1[i] << endl;

    cout << "num1 배열의 크기 " << sizeof(num1) << endl;

    memcpy(num2, num1, sizeof(num1));
    /* 
    void* memcpy(void* dest, const void* source, size_t num)
    
    첫번째 인자 dest = 복사 받을 메모리를 가리키는 포인터
    두번째 인자 source = 복사할 메모리를 가리키는 포인터
    세번째 인자 num = 복사할 데이터의 길이(byte 단위)
    */

    for (int i = 0; i < size(num2); i++)
        cout << num2[i] << endl;
    return 0;
}
  • 코드 실행 결과

    num1[0] = 0
    num1[1] = 1
    num1[2] = 2
    num1[3] = 3
    num1 배열의 크기 16
    num2[0] = 0
    num2[1] = 1
    num2[2] = 2
    num2[3] = 3

다차원 배열 - 자료형[상수][상수]

배열안에 배열을 할당한 것으로 2차원 배열일 경우 표와 같은 형태를 띈다.

#include <iostream>

using namespace std;

int main() {
    int matrix1[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    int matrix2[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    int matrix3[3][3];

    copy(&matrix1[0][0], &matrix1[0][0] + 3 * 3, &matrix3[0][0]);
    /*
    copy(InputIt first, InputIt last, OutputIt d_first);
    first : 복사할 메모리를 가리키는 포인터
    last : 복할 메모리의 마지막을 가리키는 포인터
    d_first : 복사 받을 메모리를 가리키는 포인터
    */

    for (int i = 0; i < size(matrix3); i++) {
        for (int j = 0; j < size(matrix3[i]); j++)
            cout << matrix3[i][j] << " ";
        cout << "\n";
    }

    return 0;
}
  • 코드 실행 결과

    1 2 3
    4 5 6
    7 8 9

for(int i = 0; i < size(arr[i]); i++){
	for(int j = 0; < size(arr); j++)
    	cout << arr[j][i];
    }
}

위처럼 행의 순서대로 출력할 수도 있지만
배열이 접해있지 않아 시간이 더욱 오래걸린다.

profile
어중이떠중이

0개의 댓글