C - Change all values of an array of structures in one line
arrays, c, initialization, structure
Solution
In C99 you can assign each structure in a single line. I don't think that you can assign the array of structs in one line though.
C99 introduces compound literals. See the Dr. Dobbs article here: The New C: Compound Literals
theTest[0] = (test_t){7,8,9};
theTest[1] = (test_t){10,11,12};
You could assign to a pointer like this:
test_t* p;
p = (test_t [2]){ {7,8,9}, {10,11,12} };
You could use memcpy as well:
memcpy(theTest, (test_t [2]){ {7,8,9}, {10,11,12} }, sizeof(test_t [2]);
Above tested with gcc -std=c99 (version 4.2.4) on linux.
You should read the Dr. Dobbs article to understand how compound literals work.
Problem
I can declare a structure: ``` typedef struct { int var1; int var2; int var3; } test_t; ``` Then create an array of those structs structure with default values: ``` test_t theTest[2] = { {1,2,3}, {4,5,6} }; ``` But after I've created the array, is there any way to change the values in the same way I did above, using only one line, specifying every value explicitly without a loop?