배열 C++ | 선언 | 초기화 | 배열 예제에 대한 포인터

배열이란 무엇입니까?

배열은 동일한 데이터 유형의 요소를 순차적으로 저장하는 데이터 구조입니다. 에이 C++ 배열은 고정된 크기를 가집니다.

배열은 유사한 데이터 유형의 변수 모음으로 볼 수 있습니다. 각 변수를 선언하고 개별적으로 값을 할당하는 대신 하나의 변수(배열)를 선언하고 여기에 다양한 변수의 값을 추가할 수 있습니다. 배열에 추가된 각 값은 인덱스로 식별됩니다.

왜 배열이 필요한가요?

배열 모든 프로그래밍 언어에서 매우 중요합니다. 이는 변수나 유사한 데이터 유형의 데이터 모음을 별도로 저장하는 대신 함께 저장하는 보다 편리한 방법을 제공합니다. 배열의 각 값은 개별적으로 액세스됩니다.

배열을 선언하세요. C++

배열 선언 C++ 배열에 의해 저장될 요소의 수와 유형을 명시하는 작업이 포함됩니다. 통사론:

type array-Name [ array-Size ];

1차원 배열 선언 규칙 C++.

  • 유형: 유형은 배열에 저장될 요소의 유형이며 유효한 형식이어야 합니다. C++ 데이터 형식.
  • 배열 이름: array-Name은 어레이에 할당될 이름입니다.
  • 배열 크기: array-Size는 배열에 저장될 요소의 수입니다. 정수여야 하며 0보다 커야 합니다.

예를 들어 age라는 배열을 만들고 다음과 같이 학생 5명의 나이를 저장할 수 있습니다.

int age[5];

age 배열은 다양한 학생의 나이를 나타내는 5개의 정수를 저장합니다.

어레이 초기화

배열 초기화는 배열에 요소를 할당/저장하는 프로세스입니다. 초기화는 단일 명령문으로 수행하거나 하나씩 수행할 수 있습니다. 배열의 첫 번째 요소는 인덱스 0에 저장되고 마지막 요소는 인덱스 n-1에 저장됩니다. 여기서 n은 배열의 총 요소 수입니다.

age 배열의 경우 첫 번째 요소는 인덱스 0에 저장되고 마지막 요소는 인덱스 4에 저장됩니다.

age 배열을 사용하여 배열 초기화가 수행되는 방법을 보여드리겠습니다.

int age[5] = {19, 18, 21, 20, 17};

{ } 안의 요소의 총 개수는 [ ] 안에 명시된 값을 초과할 수 없습니다. 요소 19는 인덱스 0에, 18은 인덱스 1에, 21은 인덱스 2에, 20은 인덱스 3에, 17은 인덱스 4에 있습니다. [ ] 안에 배열에 저장할 요소 수를 명시하지 않으면 배열은 { } 내에 추가된 요소를 담을 수 있을 만큼만 커집니다. 예를 들어:

int age[] = {19, 18, 21, 20, 17};

위의 명령문은 이전 명령문과 정확히 동일한 배열을 생성합니다. 인덱스를 사용하여 하나의 요소를 배열에 할당할 수도 있습니다. 예를 들어:

age[3] = 20;

위의 명령문은 age라는 배열의 인덱스 20에 값 3을 저장합니다. 즉, 20은 4가 됩니다.th 배열의 요소입니다.

배열 유형

두 종류의가 있습니다 C++ 배열:

  • XNUMX차원 배열
  • 다차원 배열
  • 배열에 대한 포인터

XNUMX차원 배열

데이터 항목을 1차원으로만 선형으로 배열한 배열입니다. 일반적으로 XNUMX차원 배열이라고 합니다. 통사론:

datatype array-name[size];
  • array-name은 배열의 이름입니다.
  • 크기는 배열에 저장할 항목의 수입니다.

예 :

#include <iostream>
using namespace std;

int main()
{
	int age[5] = { 19, 18, 21, 20, 17 };
	for (int x = 0; x < 5; x++)
	{
		cout <<age[x]<<"\n";
	}
}

출력:

XNUMX차원 배열

다음은 코드의 스크린샷입니다.

XNUMX차원 배열

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. 프로그램의 논리를 추가해야 하는 main() 함수를 호출합니다.
  4. main() 함수 본문의 시작입니다.
  5. 5개의 정수를 저장하기 위해 age라는 배열을 선언합니다. 5개의 정수도 초기화되었습니다.
  6. for 루프를 사용하여 정수 변수 x를 만듭니다.
  7. for 루프 본문의 시작 부분입니다.
  8. 루프 변수 x를 사용하여 배열 age 값을 반복하고 콘솔에 인쇄합니다. “\n”은 줄바꿈 문자이며 매 반복마다 새 줄에 인쇄됩니다.
  9. 본체의 끝 for 루프.
  10. main() 함수 본문의 끝입니다.

다차원 배열

데이터 항목을 배열하여 배열의 배열을 형성하는 배열입니다. 다차원 배열은 여러 차원을 가질 수 있지만 XNUMX차원 배열과 XNUMX차원 배열이 일반적입니다. 통사론:

datatype array-name[d1][d2][d3]...[dn];

array-name은 n차원을 갖는 배열의 이름입니다. 예를 들어:

XNUMX차원 배열

2차원 배열은 1차원 배열이 있는 목록에 데이터를 저장합니다. 행과 열이 있는 행렬입니다. 2차원 배열을 선언하려면 다음 구문을 사용합니다.

type array-Name [ x ][ y ];

유형은 유효해야 합니다. C++ 데이터 유형. 2D 배열을 테이블로 봅니다. 여기서 x는 행 수를 나타내고 y는 열 수를 나타냅니다. 즉, a[x][y] 형식을 사용하여 2D 배열의 각 요소를 식별합니다. 여기서 x는 행 수이고 y는 요소가 속한 열 수입니다.

다음은 2D 배열을 초기화하는 방법의 예입니다.

int a[2][3] = {  
   {0, 2, 1} ,   /*  row at index 0 */
   {4, 3, 7} ,   /*  row at index 1 */
   };

위의 예에는 2×2 행렬로 볼 수 있는 3D 배열이 있습니다. 2개의 행과 3개의 열이 있습니다. 요소 0은 행 인덱스 0과 열 인덱스 1의 교차점에 위치하므로 a[0][1]로 액세스할 수 있습니다. 요소 3은 다음 위치에 있으므로 a[1][2]로 액세스할 수 있습니다. 행 인덱스 1과 열 인덱스 2의 교차점입니다.

요소의 다른 행을 구별하기 위해 단순히 중괄호를 추가했다는 점에 유의하세요. 초기화는 다음과 같이 수행될 수도 있습니다.

int a[2][3] = {0, 2, 1, 4, 3, 7};
   };

다음 C++ 예제는 2D 배열을 초기화하고 탐색하는 방법을 보여줍니다.

#include <iostream>
using namespace std;
int main() 
{
	// a 2x3 array
	int a[3][2] = { {0, 2}, {1, 4}, {3, 7} };

	// traverse array elements

	for (int i=0; i<3; i++)
		for (int j=0; j<2; j++) 
		
		{
			cout << "a[" <<i<< "][" <<j<< "]: ";
			cout << a[i][j] << endl;
		}
	return 0;
}

출력:

XNUMX차원 배열

위 코드의 스크린샷은 다음과 같습니다.

XNUMX차원 배열

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. 코드를 추가해야 하는 main() 함수를 호출합니다.
  4. main() 함수 본문의 시작입니다.
  5. 코멘트. 그만큼 C++ 컴파일러는 이것을 건너뜁니다.
  6. 2행 3열의 2차원 배열을 선언합니다. 항목도 배열에 추가되었습니다.
  7. 코멘트. 그만큼 C++ 컴파일러는 이것을 건너뜁니다.
  8. for 루프를 사용하여 변수를 생성합니다. 이 변수는 배열의 행 인덱스를 반복합니다.
  9. for 루프를 사용하여 변수 j를 만듭니다. 이 변수는 배열의 열 인덱스를 반복합니다.
  10. 루프 본문의 시작입니다.
  11. 콘솔의 대괄호 안에 변수 i와 j의 값을 출력하세요.
  12. 배열 a의 인덱스 [i][j]에 저장된 값을 출력합니다.
  13. 루프 본문의 끝입니다.
  14. 프로그램이 제대로 실행되면 main() 함수는 정수 값을 반환해야 합니다.
  15. main() 함수 본문의 끝입니다.

XNUMX차원 배열

3D 배열은 배열의 배열입니다. 3D 배열의 각 요소는 3개의 인덱스 집합으로 식별됩니다. 3D 배열의 요소에 액세스하기 위해 세 개의 for 루프를 사용합니다. 예를 들어:

#include<iostream>
using namespace std;
void main()
{
	int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};
	cout << "a[0][1][0] = " << a[0][1][0] << "\n";
	cout << "a[0][1][1] = " << a[0][1][1] << "\n";
}

출력:

XNUMX차원 배열

다음은 코드의 스크린샷입니다.

XNUMX차원 배열

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. 프로그램의 논리를 추가해야 하는 main() 함수를 호출합니다.
  4. main() 함수 본문의 시작입니다.
  5. 크기가 3x2x3인 2D 배열을 선언합니다. 배열의 값도 초기화되었습니다.
  6. 배열의 인덱스 [0][1][0]에 저장된 항목에 액세스하여 콘솔에 인쇄합니다.
  7. 배열의 인덱스 [0][1][1]에 저장된 항목에 액세스하여 콘솔에 인쇄합니다.
  8. main() 함수 본문의 끝입니다.

배열에 대한 포인터

A 포인터 주소를 담고 있는 변수입니다. 포인터를 사용하여 변수의 주소를 저장하는 것 외에 배열 셀의 주소를 저장하는 데 포인터를 사용할 수 있습니다. 배열의 이름은 항상 첫 번째 요소를 가리킵니다. 아래 주어진 선언을 고려하십시오.

int age[5];

age는 age라는 배열의 첫 번째 요소의 주소인 $age[0]을 가리키는 포인터입니다. 다음 예를 고려해 보세요.

#include <iostream>
using namespace std;
int main()
{
	int *john;

	int age[5] = { 19, 18, 21, 20, 17 };

	john = age;

	cout << john << "\n";

	cout << *john;
	
}

출력:

배열에 대한 포인터

위 출력의 첫 번째 값은 컴퓨터 메모리에 있는 배열의 첫 번째 요소에 할당된 주소에 따라 다른 값을 반환할 수 있습니다.

다음은 코드의 스크린샷입니다.

배열에 대한 포인터

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. 프로그램의 논리를 추가해야 하는 main() 함수를 호출합니다.
  4. main() 함수 본문의 시작입니다.
  5. *john이라는 포인터 변수를 선언합니다.
  6. 5개의 정수를 저장하기 위해 age라는 정수 배열을 선언합니다. 정수 값도 초기화되었습니다.
  7. 배열 age의 첫 번째 인덱스에 저장된 항목의 주소 값을 변수 john에 할당합니다.
  8. 배열 age의 첫 번째 인덱스에 저장된 항목의 주소인 변수 john의 값을 인쇄합니다.
  9. age 배열에 저장된 첫 번째 값을 인쇄합니다.
  10. main() 함수 본문의 끝입니다.

배열 이름은 상수 포인터로 사용될 수 있으며 그 반대도 마찬가지입니다. 이는 *(age + 3)을 사용하여 배열 age의 인덱스 3에 저장된 값에 액세스할 수 있음을 의미합니다. 예를 들어:

#include <iostream>
using namespace std;

int main() {
	// an array of 5 elements.
	int age[5] = { 19, 18, 21, 20, 17 };
	int *p;

	p = age;

	// output array values

	cout << "Using pointer: " << endl;

	for (int x=0; x<5; x++) {
		cout << "*(p + " << x << ") : ";
		cout << *(p + x) << endl;
	}
	cout << "Using age as address: " << endl;

	for (int x = 0; x < 5; x++) {
		cout << "*(age + " << x << ") : ";
		cout << *(age + x) << endl;
	}

	return 0;
}

출력:

배열에 대한 포인터

다음은 코드의 스크린샷입니다.

배열에 대한 포인터

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. main() 함수를 호출하고 main() 함수 본문의 시작을 호출합니다.
  4. 코멘트. 그만큼 C++ 컴파일러는 이것을 건너뜁니다.
  5. 5개의 정수를 저장하기 위해 age라는 배열을 선언합니다.
  6. 정수 포인터 생성 p.
  7. 배열 age의 첫 번째 요소 주소 값을 p에 할당합니다.
  8. 코멘트. 그만큼 C++ 컴파일러는 이것을 건너뜁니다.
  9. 콘솔에 일부 텍스트를 인쇄합니다.
  10. for 루프를 사용하여 정수 x를 만듭니다. {는 for 루프 본문의 시작을 표시합니다.
  11. 콘솔에 다른 텍스트와 결합된 x 값을 인쇄합니다.
  12. 콘솔에 *(p + x) 값을 인쇄합니다.
  13. for 루프 본문의 끝입니다.
  14. 콘솔에 일부 텍스트를 인쇄합니다.
  15. for 루프를 사용하여 변수 x를 만듭니다. {는 for 루프 본문의 시작을 표시합니다.
  16. 다른 텍스트와 함께 0에서 4까지 x 값을 인쇄합니다.
  17. *(age + x) 값을 출력합니다.
  18. for 루프 본문의 끝입니다.
  19. 프로그램이 성공적으로 실행되면 값을 반환합니다.
  20. main() 함수 본문의 끝입니다.

배열 값에 액세스

배열의 요소는 해당 인덱스를 사용하여 액세스합니다. 액세스할 요소의 인덱스는 배열 이름 바로 뒤에 있는 대괄호 [ ] 안에 추가됩니다. 예를 들어:

int john = age[2];

위의 예에서는 John의 나이가 age라는 배열의 인덱스 2에 저장되어 있다고 간단히 설명하고 있습니다. 이는 John의 나이가 3세임을 의미합니다.rd 배열 연령의 값입니다. 여기에 완전한 것이 있습니다 C++ 이 값에 액세스하고 인쇄하는 방법을 보여주는 예:

#include<iostream>
using namespace std;
int main()
{
	int age[5] = { 19, 18, 21, 20, 17 };
	int john = age[2];
	cout << "The age of John is:"<<john;
}

출력:

배열 값에 액세스

다음은 코드의 스크린샷입니다.

배열 값에 액세스

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  3. 코드를 추가해야 하는 main() 함수를 호출합니다.
  4. main() 함수 본문의 시작입니다.
  5. 5개의 정수 요소를 저장하기 위해 age라는 배열을 선언합니다.
  6. 배열 age의 인덱스 2에 저장된 값에 액세스하고 해당 값을 john이라는 변수에 저장합니다.
  7. 다른 텍스트와 함께 콘솔에 변수 john의 값을 인쇄합니다.

어레이의 장점 C++

다음은 Array를 사용할 때의 장점/이점입니다. C++:

  • 배열 요소를 쉽게 탐색할 수 있습니다.
  • 배열 데이터를 쉽게 조작할 수 있습니다.
  • 배열 요소는 무작위로 액세스할 수 있습니다.
  • 배열은 코드 최적화를 용이하게 합니다. 따라서 더 적은 코드를 사용하여 많은 작업을 수행할 수 있습니다.
  • 배열 데이터를 쉽게 정렬할 수 있습니다.

어레이의 단점 C++

  • 배열의 크기는 고정되어 있습니다. 따라서 초기화 후에는 새 요소를 추가할 수 없습니다.
  • 요구 사항보다 많은 메모리를 할당하면 메모리 공간이 낭비되고, 메모리 할당량이 적어 문제가 발생할 수 있습니다.
  • 배열에 저장할 요소의 개수를 미리 알고 있어야 합니다.

요약

  • 배열은 동일한 데이터 유형의 요소를 저장하는 데이터 구조입니다.
  • 배열 요소는 순차적으로 저장됩니다.
  • 배열 요소는 해당 인덱스를 사용하여 표시됩니다. 첫 번째 요소는 인덱스 0에 있고 마지막 요소는 인덱스 n-1에 있습니다. 여기서 는 배열 요소의 총 개수입니다.
  • 배열 선언에는 배열 요소의 데이터 유형과 배열에 저장될 요소 수를 정의하는 작업이 포함됩니다.
  • XNUMX차원 배열은 요소를 순차적으로 저장합니다.
  • XNUMX차원 배열은 요소를 행과 열에 저장합니다.
  • XNUMX차원 배열은 배열의 배열입니다.
  • 인덱스를 사용하여 요소를 배열에 추가할 수 있습니다.
  • 배열 요소는 해당 인덱스를 사용하여 액세스됩니다.
  • 다차원 배열은 두 개 이상의 차원을 갖습니다.
  • 배열 이름은 첫 번째 요소를 가리킵니다.
  • 배열은 크기가 고정되어 있습니다. 즉, 초기화 후에는 배열에 새 요소를 추가할 수 없습니다.