배열을 모두 0으로 초기화하는이 형식입니다.
char myarray[ARRAY_SIZE] = {0} 모든 컴파일러에서 지원합니까? ,
그렇다면 다른 유형과 유사한 구문이 있습니까? 예를 들면
bool myBoolArray[ARRAY_SIZE] = {false}
배열을 모두 0으로 초기화하는이 형식입니다.
char myarray[ARRAY_SIZE] = {0} 모든 컴파일러에서 지원합니까? ,
그렇다면 다른 유형과 유사한 구문이 있습니까? 예를 들면
bool myBoolArray[ARRAY_SIZE] = {false}
int a[10] = { 1, 2, 3 };설정합니다 a[3]..a[9]하기 위해 0, ( "암시 적으로 초기화 정적 저장 기간이 객체와 같은"). C ++에서도 마찬가지입니까?
false동일하지 않습니다 0, 그러나에 {0}0으로 변환됩니다 false, 그리고 (C ++의 경우)에 {}당신도 변환에 대해 걱정하지 않아도 : 그것은 초기화 것 false또는 0널 포인터 나 다른 유형에 맞는 기본 또는.
답변:
예,이 초기화 형식은 모든 C ++ 컴파일러에서 지원됩니다. C ++ 언어의 일부입니다. 사실, 그것은 C 언어에서 C ++로 온 관용구입니다. C 언어에서는 = { 0 }관용적 범용 제로 이니셜 라이저 입니다. 이것은 C ++ 에서도 거의 마찬가지입니다.
이 초기화는 보편적이기 때문에 bool배열에 대해 다른 "구문"이 실제로 필요하지 않습니다. 유형에 0대한 이니셜 라이저로도 작동 bool하므로
bool myBoolArray[ARRAY_SIZE] = { 0 };
로 전체 배열을 초기화하도록 보장됩니다 false. 만큼 잘
char* myPtrArray[ARRAY_SIZE] = { 0 };
in 유형의 null 포인터로 전체 배열을 초기화하도록 보장합니다 char *.
가독성이 향상되었다고 생각되면 확실히 사용할 수 있습니다.
bool myBoolArray[ARRAY_SIZE] = { false };
char* myPtrArray[ARRAY_SIZE] = { nullptr };
하지만 요점은 = { 0 }변형이 정확히 동일한 결과를 제공 한다는 것입니다.
그러나 C ++ = { 0 }에서는 enum 형식과 같이 정수로 초기화 할 수없는 모든 형식에 대해 작동하지 않을 수 있습니다 0. 그러나 C ++는 더 짧은 형식을 지원합니다.
T myArray[ARRAY_SIZE] = {};
즉, {}. 이렇게하면 모든 유형의 배열이 기본 초기화됩니다 (요소가 기본 초기화를 허용한다고 가정). 즉, 기본 (스칼라) 유형의 경우 전체 배열이 제대로 0으로 초기화됩니다.
bool myBoolArray[ARRAY_SIZE] = { false };에서 배열을 작성 하면 모두 false로 초기화되지만 bool myBoolArray[ARRAY_SIZE] = { true };첫 번째 요소 만 작성 하면 true로 설정되고 나머지는 모두 false로 설정됩니다. 설명이 있습니까?
bool하면 나머지는 0으로 초기화됩니다. 그것이 바로 그 방법입니다.
bool myBoolArray[ARRAY_SIZE];배열에 임의의 값이 올바로 포함되어 있으므로 초기화가 다른 값을 가진 배열을 반환 할 수 있다고 예상하지 못했을 것입니다. 그게 다야.
이러한 유형의 방법으로 C ++에서 배열을 선언 할 수 있습니다. 배열 크기를 알고 있다면 다음과 같이 배열을 선언해야합니다. integer : int myArray[array_size];
Double : double myArray[array_size];
Char and string : char myStringArray[array_size];
char와 string의 차이점은 다음과 같습니다.
char myCharArray[6]={'a','b','c','d','e','f'};
char myStringArray[6]="abcdef";
배열의 크기를 모르는 경우 다음과 같이 배열을 비워 두어야합니다.
정수: int myArray[array_size];
더블: double myArray[array_size];
false이0(그렇지 않으면if(false)거짓으로 평가되지 않을 것임)과 같으므로 당신이 가진 것은 아마도 99 %의 컴파일러에서 작동 할 것이라고 확신합니다. 표준을 인용하기 전까지는 다른 1 %에 대해 확신 할 수 없습니다.