추천, 2024

에디터의 선택

일차원 (1D) 및 2 차원 (2D) 배열의 차이점

배열은 유사한 데이터 유형을 가지며 공통 이름으로 참조되는 변수의 모음입니다. 배열의 특정 요소는 해당 배열의 특정 인덱스에 의해 액세스됩니다. Java의 배열은 C ++과 다르게 작동합니다. 논의의 주요 주제는 1 차원 및 2 차원 배열의 차이입니다. 1 차원 배열은 동일한 데이터 유형을 갖는 변수 목록이지만 2 차원 배열은 유사한 데이터 유형을 갖는 '배열 배열'입니다. C ++은 배열에 대한 바운드 검사를하지 않지만 Java는 배열에 대한 엄격한 바운드 검사를 가지고 있습니다.

먼저 비교 차트와 함께 1 차원 및 2 차원 배열의 차이점부터 살펴 보겠습니다.

비교 차트 :

비교의 근거일차원2 차원
기본
유사한 데이터 유형의 요소들로 된 단일 목록을 저장하십시오.'목록 목록'또는 '배열 배열'또는 '1 차원 배열 배열'을 저장하십시오.
선언C ++에서 / * 선언
변수 이름 [크기]; * /
/ * Java에서의 선언
변수 이름 [];
variable_name = 새 유형 [크기]; * /
C ++에서 / * 선언
variable_name을 입력하십시오 [size1] [size2]; * /
/ * Java에서의 선언
variable_name 유형 = 새 int [크기 1] [크기 2]; * /
대체 선언/ * Java에서
int [] a = 새로운 int [10]; * /
/ * Java에서
int [] [] a = 새 int [10] [20]; * /
총 크기 (바이트)총 바이트 = sizeof (배열 변수의 데이터 유형) * 배열의 크기입니다.총 바이트 = sizeof (배열 변수의 데이터 유형) * 첫 번째 인덱스의 크기 * 두 번째 인덱스의 크기.
수신 매개 변수포인터, 크기가 지정된 배열 또는 크기가 조정되지 않은 배열로 수신 될 수 있습니다.매개 변수를 수신하면 배열의 가장 오른쪽 치수를 정의해야합니다.
치수1 차원.2 차원.

1 차원 배열의 정의 (일차원 배열)

일차원 또는 일차원 배열은 "유사한 데이터 유형의 변수 목록"으로 간주되며 각 변수는 해당 배열의 이름 앞에 대괄호 안에 색인을 지정하여 명확하게 액세스 할 수 있습니다.

C ++에서 크기가있는 배열 변수를 선언하면 메모리에 공간을 할당 할 수 있습니다. 자바에서는 두 단계로 이루어진다. 먼저 원하는 유형의 변수를 선언해야합니다. 둘째, 'new'를 사용하여 배열을 유지하기 위해 메모리를 할당하고 선언 된 배열 변수에 할당해야합니다. 따라서 배열은 Java에서 동적으로 할당됩니다.

C ++ 컨텍스트에서 설명합시다.

 // C ++에서의 선언 variable_name [size]; 

여기서 type은 배열 변수의 데이터 유형을 선언하고 size는 배열이 보유 할 요소의 수를 정의합니다.

예를 들어, 한 해의 각 달의 잔액을 포함하는 배열을 선언하고자하는 경우.

 // 예제 int month_balance [12]; 

Month _balance는 각 달의 잔액을 나타내는 12 개의 정수를 보유 할 배열 변수입니다. 이제 우리가 4 월의 '4 월'의 잔액에 액세스하기를 원한다면, 변수 이름과 4 월의 월 인덱스 값인 'month_balance [3]'을 포함하는 대괄호로 간단히 언급해야합니다. 그러나 '4 월'이 올해의 네 번째 달이기 때문에 모든 배열의 첫 요소가 0이므로 '[3]'을 언급했습니다.

자바에서는 다음과 같이 할 수 있습니다.

 // 자바 타입 variable_name의 선언 []; variable_name = 새 유형 [크기]; 

여기서는 초기에 배열 변수를 해당 유형으로 선언 한 다음 'new'를 사용하여 메모리를 할당하고 선언 된 배열 변수에 'new'를 할당했습니다. 위의 예제를 취해서 한 해의 각 달에 저울을 포함 할 배열을 선언하고자 할 때.

 // 예제 int month_balance []; month_balance = 새로운 int [12]; 

여기서 'new'는 배열 변수 "month_balance"에 메모리를 할당하므로 이제 mont_balance는 12 개의 정수 값에 대한 메모리를 보유하게됩니다.

배열은 선언 될 때 초기화 될 수 있습니다. 배열 이니셜 라이저는 괄호로 묶은 쉼표로 구분 된 값의 목록입니다.
//예

 int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180}; 

2 차원 배열 (2-D 배열)의 정의

C ++과 Java 모두 다차원 배열을 지원합니다. 다차원 배열의 가장 간단한 형식 중 하나는 2 차원 배열 또는 2 차원 배열입니다. 2 차원 배열은 '배열 배열'또는 '1 차원 배열 배열'로 간주 될 수 있습니다. 2 차원 배열 변수를 선언하려면 두 개의 대괄호가 오는 배열 이름을 지정해야하며 두 번째 인덱스는 대괄호 두 번째 집합입니다.

2 차원 배열은 행 - 열 행렬 형식으로 저장됩니다. 여기서 첫 번째 인덱스는 행을 나타내고 두 번째 인덱스는 열을 나타냅니다. 배열의 두 번째 또는 가장 오른쪽 인덱스는 배열 요소에 액세스하는 동안 첫 번째 또는 가장 왼쪽 인덱스와 비교하여 매우 빠르게 변경됩니다.

C ++에서 2 차원 배열은 다음과 같이 선언됩니다.

 // C ++에서의 선언 variable_name [size1] [size2]; 

예를 들어, 매월 30 일마다의 잔액을 2 차원 배열로 저장하려고합니다.

 // 예제 int month_balance [12] [30]; 

Java에서 2 차원 배열은

 // 자바 타입의 선언 variable_name = new int [size1] [size2]; // 예제 int month_balance = new int [12] [30]; 

전체 배열을 함수의 매개 변수로 전달할 수 없으므로 배열의 첫 번째 요소에 대한 포인터가 전달됩니다. 2 차원 배열을받는 인수는 맨 오른쪽 차원을 정의해야합니다. 배열을 올바르게 색인화하려는 경우 각 행의 길이를 확인하기 위해 컴파일러에 필요하기 때문에 가장 오른쪽 치수가 필요합니다. 가장 오른쪽의 인덱스가 언급되지 않은 경우 컴파일러는 다음 행이 시작되는 위치를 판별 할 수 없습니다.

 // Java의 예제 void receiveing_funct (int a [] [10]) {. . . } 

메모리가 Java의 2 차원 배열에 동적으로 할당되면 가장 왼쪽의 인덱스가 지정되고 나머지 차원은 별도로 할당 될 수 있습니다. 즉 배열의 모든 행이 같은 크기가 아닐 수 있습니다.

 // 자바에서의 예제 int month_balance = new int [12] []; month_balance [0] = 새로운 int [31]; month_balance [1] = 새로운 int [28]; month_balance [2] = 새로운 int [31]; month_balance [3] = 새로운 int [30]; month_balance [4] = 새로운 int [31]; month_balance [5] = 새로운 int [30]; month_balance [6] = 새로운 int [31]; month_balance [7] = 새로운 int [30]; month_balance [8] = 새로운 int [31]; month_balance [9] = 새로운 int [30]; month_balance [10] = 새로운 int [31]; month_balance [11] = 새로운 int [30]; month_balance [12] = 새로운 int [31]; 

그러나 그렇게하는 것의 이점은 없습니다.

1 차원 및 2 차원 배열의 주요 차이점

  1. 1 차원 배열은 요소가 유사한 데이터 유형의 목록입니다. 한편, 2 차원 배열은 요소가 유사한 데이터 유형의 배열 인 목록입니다.
  2. C ++에서, 1 차원 배열이 수신 함수의 매개 변수에 의해 수신 될 때, 배열의 크기를 언급 할 필요가 없습니다. 컴파일러는 길이의 일부 (매개 변수와 함께 언급 된 데이터 유형)의 배열을 이해합니다. 받을 것이다. 2 차원 배열에서는 컴파일러가 단일 행 끝과 새 행이 시작되는 위치를 알아야하기 때문에 두 번째 또는 맨 오른쪽 인덱스를 지정해야합니다.
  3. C ++에서 1 차원 배열은 연속 된 메모리 위치에 인덱싱 된 순서로 저장되지만 2 차원 배열은 인접한 메모리 위치에도 저장되지만 2 차원 배열에 여러 행이 있으므로 첫 번째 행 뒤에는 두 번째 행과 세 번째 행이옵니다.

노트 :

두 함수 모두 1 차원 배열과 2 차원 배열을 전달하는 것과 비슷합니다. 즉, 배열의 이름으로 만 전달됩니다.

 // 예제 pass_funt (name_of_array); 

결론:

1 차원 및 2 차원 배열 모두에서 인덱스는 배열의 요소를 구체적으로 식별하는 유일한 요소이기 때문에 매우 중요한 역할을합니다. 1 차원 및 2 차원 배열은 선언시에 초기화 될 수 있습니다.

Top