这是我的代码的一部分。我想仅将arraylist[0]
初始化为arraylist[0].x = 0
和arraylist[0].y = 0
。我不需要初始化struct数组的其余部分。我该怎么做?谢谢。
#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;
}
答案 0 :(得分:5)
您可以初始化struct array的任何特定元素。
例如:
struct example arraylist[40] = { [0]={0,0}}; //sets 0th element of struct
struct example arraylist[40] = { [5]={0,0}}; //sets 6th element of struct
这被称为Designated Initializers,它在C99改编之前曾经是GNU扩展,自C99起也支持标准C.
答案 1 :(得分:2)
由于您正在讨论文件范围中的变量,因此您不必执行任何操作,因为如果您不提供显式初始化程序,则此类变量始终由0
初始化。
答案 2 :(得分:1)
在C中,初始化结构/数组的一部分后,用0初始化其余部分。
你应该没有问题,因为你不应该首先访问未初始化的变量,并且没有定义它们的值。
答案 3 :(得分:1)
在C 中,所有静态和外部变量初始化为0,除非另有明确初始化。