gpt4 book ai didi

c - C中对象的指针矩阵

转载 作者:行者123 更新时间:2023-12-02 08:45:23 25 4
gpt4 key购买 nike

我认为这是基本问题,但我不是英语,也没有使用编程语言的术语,这就是我在这里提问的原因(我找不到)。

这是我的上下文:

我有一个结构(让我们简化它)如下

struct _unit
{
char value;
} Unit;

在主程序中,我希望有一行指针指向一行指向结构 Unit 的其他指针。有点像

int main ()
{
Unit** units;

..

printf("%d", units[0][0].value);

...
}

我有点困惑,如何才能将 Unit 作为多维数组进行访问。

这是我的尝试

{
units = (Unit**)malloc(sizeof(void*));

units[0][0] = (Unit*)malloc(sizeof(Unit));
}

最佳答案

你快到了。

首先,您需要将您的类型声明为 Unit**。然后,在此基础上,分配足够的 Unit* 指针来保存行数。最后,循环那些创建的指针,创建每个 Unit

例如:

int i;
Unit** u;

// Allocate memory to store 50 pointers to your columns.
u = malloc(sizeof(Unit*) * 50);

// Now, for each column, allocate 50 Units, one for each row.
for(i=0; i<50; i++) {
u[i] = malloc(sizeof(Unit) * 50);
}

// You can now access using u[x][y];

这是传统的做法。 C99 还引入了一种不同的语法来执行此操作,如下所示:

Unit (*u)[n] = malloc(sizeof(Unit[n][n])) // n = size of your matrix

发件人:https://stackoverflow.com/a/12805980/235700

关于c - C中对象的指针矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883512/

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