Search code examples
carraysinitialization

How to initialize array to 0 in C?


I need a big null array in C as a global. Is there any way to do this besides typing out

char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };

?


Solution

  • Global variables and static variables are automatically initialized to zero. If you have simply

    char ZEROARRAY[1024];
    

    at global scope it will be all zeros at runtime. But actually there is a shorthand syntax if you had a local array. If an array is partially initialized, elements that are not initialized receive the value 0 of the appropriate type. You could write:

    char ZEROARRAY[1024] = {0};
    

    The compiler would fill the unwritten entries with zeros. Alternatively you could use memset to initialize the array at program startup:

    memset(ZEROARRAY, 0, 1024);
    

    That would be useful if you had changed it and wanted to reset it back to all zeros.