gpt4 book ai didi

c - 如何分配内存并取消引用结构中的数组数组?

转载 作者:行者123 更新时间:2023-11-30 20:33:03 24 4
gpt4 key购买 nike

我想知道如何访问结构内部的双指针,例如:

typedef struct Example {
char **set;
int size;
}Example;

该结构在函数内部调用如下:

struct Example exmpl;

如果我需要在该数组数组中创建一个新数组,我将如何在函数/主函数中调用它?或者它与常规的 exmpl->set 相同?

最佳答案

无论set 的类型是什么,您都可以使用exmpl.set 来访问它。如果您需要访问单个元素,例如 exmpl.set[0][0]

如果需要为其分配内存,则需要为外部数组分配内存,然后为每个内部数组独立分配内存,如下创建一个 10x20 的数组:

struct Example exmpl;
exmpl.set = malloc(10 * sizeof(char*)); // 10 "arrays" in the set
for (int i = 0; i < 10; i++)
exmpl.set[i] = malloc(20 * sizeof(char)); // 20 chars within each "array"

然后设置每个元素的值:

for (int i = 0; i < 10; i++)
for (int j = 0; j < 20; j++)
exmpl.set[i][j] = calculate(i, j);

而且,数组和指针是不同的,所以这里有一个指向 char 的指针(其工作方式类似于二维字符数组)

关于c - 如何分配内存并取消引用结构中的数组数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com