【问题标题】:malloc with structs and how to access memory of malloc of structmalloc 与结构以及如何访问结构的 malloc 的内存
【发布时间】:2020-12-14 18:14:14
【问题描述】:

如果我有一个简单的结构,例如 我将如何使用 malloc 为这个结构动态分配内存?

struct Dimensions{
int height, width;
char name;
};

我不确定该怎么做,我已经尝试过

struct Dimension* dim = malloc(sizeof(struct Dimensions));

我还想稍后在我的代码中循环访问高度和宽度变量。我的第一个想法是使用指针,但我不确定这到底是什么。

会不会是这样的

int h = *width

我对 C 很陌生。谢谢

【问题讨论】:

  • dim->height, dim->widthdim->name -- dim 是一个指针,因此您可以使用 -> 运算符来引用成员。如果dim 不是指针,而是struct Dimension 类型的声明本身,那么您将使用. 运算符来访问成员。
  • 假设char name 包含多个字符,您最好将其定义更改为char *name(指针,指向字符集合,动态调整大小)或char name[20](数组固定大小的字符)。

标签: c memory struct malloc


【解决方案1】:

您动态分配该结构的方式是正确的:

struct Dimension* dim = malloc(sizeof(struct Dimensions));

我还想稍后在我的代码中循环访问高度和宽度变量。

您应该首先为 dim 分配一些值,例如:

dim->high = 1;
dim->width = 2;

您刚刚使用的name 成员char 可能不是您需要的。通常它是一个字符串:char name[100];。但是你不能对那个字符串使用赋值,所以使用strcpy

然后您可以稍后访问:

int h = dim->high;

记住,一旦你完成了动态分配的内存,你应该free它:

free(dim);
return 0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多