Ank*_*ush 1 c arrays pointers heap-memory
假设我有一个指向数组的指针int,如下:int (*x)[3].为这样的变量分配空间的正确方法是什么?例如,假设我想要10个项目的空间(这样我可以10 * 3 = 30在x中存储总值):
/* 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 ... */
Run Code Online (Sandbox Code Playgroud)
或者是否有其他方法可以正确地对内存进行malloc x(即x = malloc(sizeof(int) * 10)或x = malloc(sizeof(int *) * 10)?
谢谢.
小智 7
首先,您不希望为指针分配空间,而是为它指向的对象分配空间.这是一个重要的区别.
所以你有一个指针类型指向二维数组,第二个维度为3(让我们调用这些列),你希望数组有10 行.在C中,n维数组是连续存储的,这意味着它们与所有元素一起占用的空间非常大.所以公式变得非常简单:
x = malloc(3 * 10 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想避免幻数,你也可以使用typedef:
typedef int inttriplet[3];
// [...]
inttriplet *x;
x = malloc(10 * sizeof(inttriplet));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
792 次 |
| 最近记录: |