c - C中struct中数组和字符串的动态内存分配

标签 c structure dynamic-memory-allocation

我想创建一个结构,但我也想用动态内存分配来编写它的数组或字符串元素。

struct st {
    char *name[40];
    int age;
};

对于“name”字符串,我应该在 struct 之前使用 malloc,还是我也可以在 struct 中使用它。

1)

char *name = malloc(sizeof(char)*40);

struct st {
    char *name;
    int age;
};

2)

struct st {
    char *name = malloc(sizeof(char)*40);
    int age;
};

两者都是真的还是有误?如果它们都为真,那么哪个对代码的其他部分更有用?

最佳答案

您需要创建结构的实例,它的实际变量。然后需要在函数中初始化结构体实例的成员。

例如,在某些功能中你可以做

struct st instance;
instance.name = malloc(...);  // Or use strdup if you have a string ready
instance.age = ...;

关于c - C中struct中数组和字符串的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546479/

相关文章:

C - 使用二维数组绘制条形图 - 不会绘制负值

python - 这个控制结构是代码味道吗?

MySQL,用户结构和条件

C - 通过传递指针改变函数外部变量的值

C++私有(private)类动态n维数组

c# - C# 如何为 List<T> 动态分配内存?

c - 在 int 和 double 之间进行转换时出现意外结果

c - 为什么我的 mprotect 函数使用 5 个参数调用?

c - 二维分配数组(固定列数)作为函数的返回值

c++ - Python C头文件解析及逆向初始化