C 코드의 어레이를 0으로 합니다.
중복 가능성:
루프를 사용하지 않고 어레이를 C로 초기화하려면 어떻게 해야 합니까?
C에서 어레이를 초기화하는 방법
for 또는 다른 루프를 사용하지 않고 어레이의 기존 크기를 제로화하려면 어떻게 해야 합니까?
예를 들어 다음과 같습니다.
arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
먼 길인데...짧은 길이 필요해요.
int arr[20] = {0};
C99[$6.7.8/21]
괄호로 둘러싸인 리스트 내의 이니셜라이저가 애그리게이트의 요소 또는 멤버의 수보다 적은 경우 또는 기존의 크기의 배열을 초기화하기 위해 사용되는 문자열 리터럴 내의 문자 수가 어레이 내의 요소 수보다 적은 경우 애그리게이트의 나머지 문자는 정적 저장 기간을 갖는 객체와 암묵적으로 동일하게 초기화되어야 한다.
int arr[20];
memset(arr, 0, sizeof arr);
주의: memset은 임의의 문자와 함께 사용할 수 있습니다.
예:
int arr[20];
memset(arr, 'A', sizeof(arr));
또한 부분적으로 채워질 수 있습니다.
int arr[20];
memset(&arr[5], 0, 10);
하지만 조심하세요.어레이 사이즈에 한정되지 않고, 다음과 같은 조작을 하면, 프로그램에 큰 손상을 줄 가능성이 있습니다.
int arr[20];
memset(arr, 0, 200);
어레이 후에 (윈도우에서) 동작하고 메모리가 제로 상태가 됩니다.다른 변수 값에 손상을 줄 수 있습니다.
맨 bzero
NAME
bzero - write zero-valued bytes
SYNOPSIS
#include <strings.h>
void bzero(void *s, size_t n);
DESCRIPTION
The bzero() function sets the first n bytes of the byte area starting
at s to zero (bytes containing '\0').
사용.memset
:
int something[20];
memset(something, 0, 20 * sizeof(int));
int arr[20] = {0}
한 번만 하면 가장 쉬울 것 같아요.
언급URL : https://stackoverflow.com/questions/5636070/zero-an-array-in-c-code
'programing' 카테고리의 다른 글
printf와 vprintf 함수 패밀리의 차이점은 무엇입니까?또한 어떤 기능을 다른 기능 패밀리와 함께 사용해야 합니까? (0) | 2022.08.18 |
---|---|
어떻게 이렇게 빠르지? (0) | 2022.08.18 |
vue.js로 값을 갱신할 때 CSS 애니메이션을 추가하려면 어떻게 해야 합니까? (0) | 2022.08.18 |
Vuex의 액션이 약속을 반환하는 이유는 무엇입니까? (0) | 2022.08.18 |
입력 상자 문자열이 상자 크기보다 길면 Vue Sortable + Draggable이 작동하지 않음 (0) | 2022.08.18 |