programing

C 프로그래밍 언어에서 선언 시 2D 배열 초기화

lovejava 2023. 9. 1. 20:20

C 프로그래밍 언어에서 선언 시 2D 배열 초기화

선언할 때 0으로 2D 배열을 초기화하려면 어떻게 해야 합니까?

double myArray[3][12] = ?

double myArray[3][12] = {0};

또는 gcc 경고 "이니셜라이저 주변에 브레이스를 설치합니다."(경고가 다음과 같이 표시됨)-Wall또는, 보다 구체적으로.-Wmissing-braces)

double myArray[3][12] = {{0}};

0으로 초기화하려면 다음을 수행합니다.

double myArray[3][12] = { 0 };

실제 값을 입력하려면 가새를 중첩할 수 있습니다.

double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } };

메모리 레이아웃은 관련이 있을 수 있습니다(예: 직렬화).

myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };

첫 번째 인덱스는 행 인덱스가 가장 느린 인덱스입니다.이를 F(Fortran) 오더가 아닌 C 오더라고 합니다.

그러나 pmg의 방법은 정확합니다.

double myArray[3][12] = {{}};

동일한 결과를 제공합니다.

또한 다음 사항을 기억하십시오.

double myArray[3][12] = {{some_number}};

some_number가 0인 경우에만 예상대로 작동합니다.

예를 들어, 내가 말한다면,

double myArray[2][3] = {{3.1}};

어레이가 3.1로 가득 차지 않고 대신

3.1  0.0  0.0
0.0  0.0  0.0

(첫 번째 요소만 지정된 값으로 설정되고 나머지 요소는 0으로 설정됨)

질문(기본값이 하나인 일반 배열의 초기화 c)에는 자세한 정보가 있습니다.

그럴 것 같습니다.

double myArray[3][12] = {0}

사용할 수 있습니다.

double myArray[3][12] = { 0 };

또는

double myArray[3][12];
memset(myArray, 0, sizeof(double) * 3 * 12);

pmg의 방법은 배열을 부분적으로 초기화하면 나머지는 기본값인 0을 얻는다는 개념에서 작동하기 때문에 가장 잘 작동합니다.그렇지 않으면 배열을 전역 변수로 선언할 수 있으며 초기화되지 않으면 배열 요소가 자동으로 기본값(컴파일러에 따라 다름) 0으로 설정됩니다.

언급URL : https://stackoverflow.com/questions/1688741/initialize-a-2d-array-at-declarationtime-in-the-c-programming-language