Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

initializing an array of ints

Does anyone have a way to initialize an array of ints (any multi-byte type is fine really), to a non-zero and non -1 value simply? By which I mean, is there a way to do this in a one liner, without having to do each element individually:

int arr[30] = {1, 1, 1, 1, ...}; // that works, but takes too long to type  int arr[30] = {1}; // nope, that gives 1, 0, 0, 0, ...  int arr[30]; memset(arr, 1, sizeof(arr)); // That doesn't work correctly for arrays with multi-byte                              //   types such as int 

Just FYI, using memset() in this way on static arrays gives:

arr[0] = 0x01010101 arr[1] = 0x01010101 arr[2] = 0x01010101 

The other option:

for(count = 0; count < 30; count++)    arr[count] = 1;    // Yup, that does it, but it's two lines. 

Anyone have other ideas? As long as it's C code, no limits on the solution. (other libs are fine)

like image 309
Mike Avatar asked Nov 20 '12 16:11

Mike


People also ask

How do you initialize an array?

The initializer for an array is a comma-separated list of constant expressions enclosed in braces ( { } ). The initializer is preceded by an equal sign ( = ). You do not need to initialize all elements in an array.

How do you initialize all values of an array in Java?

Solution: This example fill (initialize all the elements of the array in one short) an array by using Array. fill(arrayname,value) method and Array. fill(arrayname ,starting index ,ending index ,value) method of Java Util class.


1 Answers

This is a GCC extension:

int a[100] = {[0 ... 99] = 1}; 
like image 171
iabdalkader Avatar answered Sep 17 '22 20:09

iabdalkader