C++ 배열
4014 단어 cpp
선언, 초기화 및 조작
int numbers[10];
는 10개의 정수를 저장할 수 있는 numbers
라는 배열을 선언합니다.배열 인덱스는 0에서 시작하므로 첫 번째 값은
numbers[0]
에 있고 마지막 값은 numbers[9]
에 있습니다.배열을 초기화하려면 중괄호 사이에 값을 나열합니다.
int numbers[] = { 9, 3, 4, 0, 1 };
선언하는 동안 초기화할 때 배열의 크기를 지정할 필요가 없습니다. 더 큰 배열을 원하고 일부 값만 초기화하려는 경우 크기를 포함할 수 있습니다.
int numbers[10] = { 9, 3, 4, 0, 1 };
는 지정된 값으로 숫자[0]에서 숫자[4]를 초기화하고 나머지는 0으로 초기화합니다.int numbers[10] = { 9, 3, 4, 0, 1 };
for (int i = 0; i < 10; i++)
std::cout << i << ": " << numbers[i] << std::endl;
// output
0: 9
1: 3
2: 4
3: 0
4: 1
5: 0
6: 0
7: 0
8: 0
9: 0
나머지 인덱스에 값을 할당할 수 있습니다.
numbers[5] = 8;
numbers[6] = 2;
이전에 설정한 값을 변경할 수도 있습니다.
numbers[0] = 47;
// output
0: 47
1: 3
2: 4
3: 0
4: 1
5: 8
6: 2
7: 0
8: 0
9: 0
출입 금지 구역의
값을 음수이거나 배열 크기 - 1(이 예에서는 숫자[10])을 초과하는 인덱스로 설정하려고 하면 범위를 벗어납니다. C++는 인덱스가 범위 내에 있는지 확인하지 않으므로 의도하지 않은 데이터에 액세스하고 변경할 수 있습니다. 프로그램을 중지시키는 보호된 메모리에 액세스할 수도 있습니다. 배열 인덱스가 범위를 벗어나면 일부 컴파일러는 오류 메시지와 함께 종료될 수 있습니다.
배열을 함수에 매개변수로 전달하기
배열은 참조로 함수에 전달되므로 함수 내에서 값을 변경하면 배열의 실제 값이 변경됩니다.
void doubleValues(int arr[], int size)
{
for (int i = 0; i < size; i++)
arr[i] = arr[i] * 2;
}
void printValues(int arr[], int size)
{
for (int i = 0; i < size; i++)
std::cout << i << ": " << arr[i] << std::endl;
std::cout << std::endl;
}
int main() {
int numbers[] = { 1, 2, 3, 4, 5 };
printValues(numbers, 5);
doubleValues(numbers, 5);
printValues(numbers, 5);
return 0;
}
// output
0: 1
1: 2
2: 3
3: 4
4: 5
0: 2
1: 4
2: 6
3: 8
4: 10
예약어
const
를 사용하여 함수가 배열 매개변수의 값을 변경하는 것을 방지할 수 있습니다. 함수에서 배열을 수정하지 않으려면 항상 배열을 상수 형식 매개변수로 선언해야 합니다.void doubleValues(const int arr[], int size)
{
// ...
}
다차원 배열
2차원(2D) 배열은 행과 열로 배열된 데이터를 포함합니다.
int grid[5][4];
5개의 행과 4개의 열이 있는 2D 정수 배열을 선언합니다. 0 1 2 3
0 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
1 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
2 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
3 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
4 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
2D 배열의 구성 요소에 액세스하려면 행의 인덱스 다음에 액세스하려는 값의 열 인덱스를 사용합니다.
grid[2][1] = 9;
for (int i = 0; i < 5; i++)
{
std::cout << i << " ";
for(int j = 0; j < 4; j++)
std::cout << "[ " << grid[i][j] << " ]" << " ";
std::cout << "\n";
}
// output
0 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
1 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
2 [ 0 ] [ 9 ] [ 0 ] [ 0 ]
3 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
4 [ 0 ] [ 0 ] [ 0 ] [ 0 ]
위의 예에서 중첩 루프를 사용하여 행과 열을 반복할 수 있음을 볼 수도 있습니다. 여기서
i
는 행을 나타내고 j
는 열을 나타냅니다.2D 배열은 1차원 배열과 유사하게 선언 중에 초기화할 수도 있습니다. 외부 중괄호의 각 인덱스는 열을 나타내며 행을 나타내는 중괄호 내부의 값 집합을 포함합니다.
int grid[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8 , 9}
};
std::cout << " 0 1 2";
std::cout << std::endl;
for (int i = 0; i < 3; i++)
{
std::cout << i << " ";
for(int j = 0; j < 3; j++)
std::cout << "[ " << grid[i][j] << " ]" << " ";
std::cout << "\n";
}
추가 읽을거리/참고문헌
Reference
이 문제에 관하여(C++ 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/robotspacefish/c-arrays-4fng텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)