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
'programing' 카테고리의 다른 글
Spring 프로필에서 @PropertySources를 선택할 수 있습니까? (0) | 2023.09.01 |
---|---|
수평줄 가운데에 가운데 텍스트 추가 (0) | 2023.09.01 |
다른 데이터베이스에 있는 하나의 데이터베이스에서 MySQL (0) | 2023.09.01 |
MySQL 데이터베이스에서 이름 패턴과 일치하는 모든 테이블 잘라내기 (0) | 2023.09.01 |
Git 저장소에서 모든 숨겨진 디렉터리/파일을 재귀적으로 무시하는 방법은 무엇입니까? (0) | 2023.09.01 |