gpt4 book ai didi

c - Malloc() 为指向 int 数组的指针分配空间的正确方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:10 25 4
gpt4 key购买 nike

假设我有一个指向 int 数组的指针,如下所示:int (*x)[3]。为这样的变量分配空间的正确方法是什么?例如,假设我想要 10 个项目的空间(以便我可以在 x 中存储总共 10 * 3 = 30 值):

/* Is this the correct way? */
x = malloc(sizeof(x) * 10);

/* Will it allow me to do this? */
x[0][0] = 10;
x[0][1] = 20;
x[0][2] = 30;

x[1][0] = 40;
x[1][1] = 50;
x[1][2] = 60;

/* ... etc ... */

或者是否有其他方法可以为 x 正确分配内存(即 x = malloc(sizeof(int) * 10)x = malloc (sizeof(int *) * 10)?

谢谢。

最佳答案

首先,您不想为指针 分配空间,而是为它指向的对象分配空间。这是一个重要的区别。

所以你有一个指针类型,它指向第二个维度为 3 的二维数组(我们称之为)并且你希望该数组有 10 个。在 C 语言中,n 维数组 是连续存储的,这意味着它们占用的空间与其所有元素的总和一样多。所以公式变得非常简单:

x = malloc(3 * 10 * sizeof(int));

编辑:如果您想避免魔数(Magic Number),您还可以使用typedef:

typedef int inttriplet[3];
// [...]
inttriplet *x;
x = malloc(10 * sizeof(inttriplet));

关于c - Malloc() 为指向 int 数组的指针分配空间的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352536/

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