malloc 与结构以及如何访问结构的 malloc 的内存
Posted
技术标签:
【中文标题】malloc 与结构以及如何访问结构的 malloc 的内存【英文标题】:malloc with structs and how to access memory of malloc of struct 【发布时间】: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->width
和 dim->name
-- dim
是一个指针,因此您可以使用 ->
运算符来引用成员。如果dim
不是指针,而是struct Dimension
类型的声明本身,那么您将使用.
运算符来访问成员。
假设char name
包含多个字符,您最好将其定义更改为char *name
(指针,指向字符集合,动态调整大小)或char name[20]
(数组固定大小的字符)。
【参考方案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;
【讨论】:
以上是关于malloc 与结构以及如何访问结构的 malloc 的内存的主要内容,如果未能解决你的问题,请参考以下文章