C中的struct数组初始化

时间:2012-05-19 12:50:06

标签: c arrays struct initialization

这是我的代码的一部分。我想仅将arraylist[0]初始化为arraylist[0].x = 0arraylist[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;
}

4 个答案:

答案 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,除非另有明确初始化。