{0}, {0,}을(를) 사용하여 어레이를 초기화하시겠습니까?
어레이를 초기화하고 싶다고 말합니다.
char myArray[MAX] = {0};
char myArray[MAX] = {0,};
char myArray[MAX]; memset(myArray, 0, MAX);
그들은 모두 같습니까, 아니면 다른 것보다 선호되는 것입니까?
감사해요.
사실 C++에서는 개인적으로 다음을 추천합니다.
char myArray[MAX] = {};
그들은 모두 같은 일을 하지만, 저는 C++로 된 것이 더 좋습니다; 그것은 가장 간결합니다. (불행히도 이것은 C.에서는 유효하지 않습니다.)
그건 그렇고, 주의하세요.char myArray[MAX] = {1};
모든 값이 1로 초기화되지는 않습니다!첫 번째 값만 1로 초기화하고 나머지 값은 0으로 초기화합니다.이 때문에, 저는 당신이 글을 쓰지 않는 것을 추천합니다.char myArray[MAX] = {0};
올바르게 작동하지만 일부 사람들에게는 약간 오해를 불러일으킬 수 있기 때문입니다.
어레이가 다음으로 초기화될 경우 생성된 코드(최적화된 빌드에서는)와 동일합니다.{0}
구문, 명시적으로 지정되지 않은 모든 값은 0으로 암시적으로 초기화되며 컴파일러는 호출을 삽입할 수 있을 정도로 충분히 알 수 있습니다.memset
.
따라서 유일한 차이점은 스타일입니다.선택은 사용하는 코딩 표준 또는 사용자의 개인적인 선호에 따라 달라집니다.
저는 첫 번째 해결책이 가장 좋다고 생각합니다.
char myArray[MAX] = {0}; //best of all
둘 중 하나를 사용할 수 있습니다.
하지만 저는 아래의 것들이 더 이해가 되고 읽을 수 있다고 느낍니다.
char myArray[MAX];
memset(myArray, 0, MAX);
항상 0으로 초기화하려고 한다고 가정합니다.
--> 당신의 첫 번째 방법과 두 번째 방법은 같습니다.저는 1등이 더 좋습니다.
--> 세 번째 방법memset()
초기화 이외의 0을 할당하려는 경우 사용해야 합니다.
--> 이 배열이 한 번만 초기화될 것으로 예상되는 경우, 다음과 같이 입력할 수 있습니다.static
컴파일러가 작업을 수행할 수 있도록(런타임 오버헤드 없음) 앞에 키워드를 지정합니다.
bzero fn(0값 바이트 쓰기)도 사용할 수 있습니다.
#include <strings.h>
void bzero(void *s, size_t n)
http://linux.die.net/man/3/bzero
언급URL : https://stackoverflow.com/questions/5591492/array-initialization-with-0-0
'sourcecode' 카테고리의 다른 글
활동 중 카메라 및 디스플레이에서 이미지 캡처 (0) | 2023.08.11 |
---|---|
24시간 형식으로 Xcode Swift am/pm 시간 (0) | 2023.08.11 |
텍스트 편집 시 Android에서 이메일 주소 확인 (0) | 2023.08.11 |
mariadb 스토어드 프로시저에서 PHP 변수 설정; SQLSTATE [42S22]:열을 찾을 수 없음 (0) | 2023.08.11 |
models.py 을 여러 파일로 분할합니다. (0) | 2023.08.11 |