struct array initialization in C

旧时模样 提交于 2020-01-02 13:36:20

问题


Here is part of my code. I would like to initialize only the arraylist[0] as arraylist[0].x = 0 and arraylist[0].y = 0. I do not need to initialize the rest of the struct array. How can I do it? Thank you.

#include <stdio.h>
struct example {
    int x;
    int y;
};
struct example arraylist[40];

int main(int argc, char *argv[]){
    printf("%d\n %d\n", arraylist[0].x, arraylist[0].y);
    return 0;
}

回答1:


You can initialise any particular element of the struct array.

For example:

struct example arraylist[40] = { [0]={0,0}}; //sets 0th element of struct

struct example arraylist[40] = { [5]={0,0}}; //sets 6th element of struct

This is called Designated Initializers which used to be a GNU extension before C99 adapted it and is also supported in standard C since C99.




回答2:


Since you are talking about a variable in file scope, here, you don't have to do anything, since such variables are always initialized by 0 if you don't provide an explicit initializer.




回答3:


In C, once you initialize part of a struct / array, you initialize the rest of it with 0.

You should have no problem with that, as you should not access uninitialized variables in first place, and their value is not defined.




回答4:


In C all static and extern variables are initialized to 0 unless explicitly initialized otherwise.



来源:https://stackoverflow.com/questions/10665339/struct-array-initialization-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!