programing

C 코드의 어레이를 0으로 합니다.

newsource 2022. 8. 18. 23:43

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에 대한 참조 참조

주의: 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