小编Tom*_*lav的帖子

初始化C结构数组,其大小在编译时未知

我没有找到这个问题的确切答案,所以这是一个愚蠢的问题,或者只是显而易见的问题.我想知道它是否会产生未定义的行为.

我定义了一些结构类型:

typedef struct {
    char string1[17];
    char string2[33];
    int   someInt;
    float someFloat;
} my_struct_t;
Run Code Online (Sandbox Code Playgroud)

我需要该结构的多个实例(就像你在struct数组中一样),但是在编译时对象的数量是未知的.

像这样初始化它是否正确?

my_struct_t *myStruct;
size_t noOfElements;
size_t completeSize;
int index;    

/* ...code which sets the number of elements at runtime... */

completeSize = sizeof(my_struct_t) * noOfElements;

myStruct = malloc(completeSize);
memset(myStruct, 0, completeSize);

/* ...and then access it as if it were an array...*/

myStruct[index].someInt = 10; // index < noOfElements
Run Code Online (Sandbox Code Playgroud)

这样做安全吗?这memset()部分是我担心的.

c struct pointers initialization memset

7
推荐指数
2
解决办法
661
查看次数

标签 统计

c ×1

initialization ×1

memset ×1

pointers ×1

struct ×1