[배열 (array) ]
같은 종류의 데이터들이 순차적으로 메모리에 저장되는 자료 구조이다.
배열은 정해진 메모리를 받아서 그 메모리들을 이어 만든 것이기 때문에 배열을 선언할 때에는 변하지 않는 값 즉 상수로 배열의 크기를 선언해야한다.
void main()
{
int arr1[2]; // 가능
int n = 2;
int arr2[n]; // 불가능
const int cn = 2;
int arr3[cn] // 가능
}
[배열의 초기화]
void main()
{
int arr1[8] = {1}; // arr1[0] = 1이고 나머지는 0으로 초기화
int arr2[8] = {1, }; // arr1과 같음
int arr3[8] = {0}; // 배열 요소를 모두 0으로 초기화
int arr4[8] = {}; // arr3과 같음
int arr5[8] = {1, 2, 3}; // arr5[0], arr5[1], arr5[2]만 1, 2, 3으로 초기화 되고 나머지는 0으로 초기화
int arr6[8] = {1, 2, 3, }; // arr5와 같음
int arr7[8]; // 배열 요소에 가비지 값이 들어감
}
[포인터로서의 배열명]
arr이라는 배열의 이름이 이미 배열의 첫 번째 값의 주소를 담고 있기 때문에 포인터는 배열의 첫 번째 값의 주소를 담게 된다.
[배열 인자]
main에서 a를 func 함수에 매개변수로 넘겨 주더라도 값 복사가 일어나기 때문에 a의 값을 직접적으론 바꿀 수 없다.
즉 a와 arg는 다른 메모리에 있기 때문에 a와 arg는 아무런 관련이 없다.
첫 번째는 arg++이 출력 되기 때문에 2가 출력된다.
그 후에 값이 바뀌지 않은 a가 1로 출력된다.
배열의 이름은 첫 번째 배열의 값의 주소를 가지고 있기 때문에 배열을 넘겨주면 주소를 넘겨주기 때문에 배열의 값을 바꿀 수 있다.
따라서 첫 번째는 arg[0]++이 된 값인 2가 출력된다.
주소를 넘겨줌으로써 arr[0]의 값이 바뀌었기 때문에 두 번째도 바뀐 값인 2가 출력된다.
[2차원 배열]
배열 요소들이 2차원으로 나열된 배열이다.
[2차원 배열 초기화 및 출력]
int main()
{
int data[2][2] = {{0}}; // 2차원 배열을 모두 0으로 초기화
int data[2][2] = {{1}}; // data[0][0]만 1로 초기화 하고 나머지는 0으로 초기화
-------------------------------------------
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
cout << int data[i][j];
// i는 배열의 행, j는 배열의 열을 의미한다.
}
행은 2차원 배열의 첫 번째 []
열은 2차원 배열의 두 번째 []
'C++ 자료구조' 카테고리의 다른 글
[c++] 클래스 (Class) (0) | 2024.04.01 |
---|---|
[c++] vector (0) | 2024.03.26 |
[c++] 제어 구조와 함수 (0) | 2024.03.19 |
[c++] 문자열(string) (0) | 2024.03.12 |
[c++] c++의 기본 개념 (0) | 2024.03.05 |