산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

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

배열이란 무엇입니까?

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

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

이 C++ 자습서에서는 다음을 배우게 됩니다.

배열이 필요한 이유는 무엇입니까?

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

C++에서 배열 선언

C++의 배열 선언에는 배열에 저장할 요소의 수와 유형을 명시하는 것이 포함됩니다. 구문:

type array-Name [ array-Size ];

C++에서 1차원 배열을 선언하기 위한 규칙.

예를 들어 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라는 배열의 인덱스 3에 값 20을 저장합니다. 이것은 20이 4 번째 가 됨을 의미합니다. 배열의 요소.

배열 유형

C++ 배열에는 두 가지 유형이 있습니다.

1차원 배열

데이터 항목이 한 차원에서만 선형으로 배열된 배열입니다. 일반적으로 1차원 배열이라고 합니다. 구문:

datatype array-name[size];

예:

#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";
	}
}

출력:

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

코드 설명:

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

다차원 배열

이것은 데이터 항목이 배열의 배열을 형성하도록 배열된 배열입니다. 다차원 배열은 여러 차원을 가질 수 있지만 2차원 및 3차원 배열이 일반적입니다. 구문:

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

array-name은 n 차원을 가질 배열의 이름입니다. 예:

2차원 배열

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

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×3 행렬로 볼 수 있는 2D 배열을 가지고 있습니다. 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;
}

출력:

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

코드 설명:

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

3차원 배열

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";
}

출력:

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

코드 설명:

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

배열에 대한 포인터

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

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. 변수 john에 배열 age의 첫 번째 인덱스에 저장된 항목의 주소 값을 할당합니다.
  8. 배열 age의 첫 번째 인덱스에 저장된 항목의 주소인 변수 john의 값을 인쇄합니다.
  9. 배열 나이에 저장된 첫 번째 값을 인쇄합니다.
  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. 배열 연령의 인덱스 2에 저장된 값에 액세스하고 그 값을 john이라는 변수에 저장합니다.
  7. 다른 텍스트와 함께 콘솔에 변수 john의 값을 인쇄합니다.

C++에서 배열의 장점

다음은 C++에서 배열을 사용할 때의 장단점입니다.

C++에서 배열의 단점

요약


C 언어

  1. C# 배열
  2. C++ 프로그래밍에서 함수에 배열 전달
  3. 자바 복사 배열
  4. C++ do… while 루프 예제
  5. 예제를 사용한 C++ 배열 동적 할당
  6. 예제가 있는 C++ 포인터
  7. C++ Char 데이터 유형(예제 포함)
  8. 예제를 사용한 C++ 연산자 오버로딩
  9. 프로그램 예제가 있는 C++ 함수
  10. 예제가 있는 C# 컬렉션 자습서