Eyzuky Eyzuky - 2 months ago 5x
C Question

Trying to set a struct's inside array to be initialized in C

I have this struct definition:

typedef struct intArray
int myArray[1000];
} intArray;

My goal is to create an intArray of zeros, i tried this:

intArray example;
int createArray[1000] = {0};
example.myArray = createArray;

This results in this error message:

error: assignment to expression with array type

I want the struct to automatically initialize the array to 0's but i understand it is not possible because it is only a type definition and not a variable. So i created one and created the array, just tried to assign it and this is the result. Any advice is appreciated.


Why not use memset to zero the array? Also, as suggested by another user, it'd be better to allocate this memory to a pointer....especially if you intend to pass that struct around between functions.

Just a thought, but this would work:

typedef struct intArray {
    int *myArray;
} intArray;

int main(void)
    intArray a;
    int b;

    // malloc() and zero the array
    a.myArray = malloc(sizeof(int) * 1000);
    memset(a.myArray, 0, (1000 * sizeof(int)));

    // Fill the array with some values
    for (b = 0; b < 1000; b++)
        a.myArray[b] = b;

    // Just to make sure all is well...yep, this works.
    for (b = 999; b >= 0; b--)
        fprintf(stdout, "myArray[%i] = %i\n", b, a.myArray[b]);