【发布时间】:2014-10-14 16:00:35
【问题描述】:
如果我有:
typedef char pos[2]; /*btw I now know no one should do this*/
void someFunction(void) {
pos *s = malloc(sizeof(pos) * 2);
}
在这种情况下如何工作?它是什么?数组就像指针,除非你在它们上使用 sizeof 你会得到“正确”的大小。所以在这种情况下,以下意味着 s 将指向 sizeof(char)*4 大小的内存?但是 s 的类型是指向指针的指针,这意味着您不能将 s 用作一维数组(或指向 chars 的指针),因为您“仍然需要通过一个级别/层的间接/指针” .还是我错了?
如何使用 s?作为二维数组还是一维数组?
(如果你有兴趣:我需要这个 bc 我想从一个函数返回两个 pos。有没有更好的方法?(尽管修复了这个问题并使用结构体而不是 2 大小的数组来存储位置数据))
【问题讨论】:
标签: c arrays pointers dynamic-memory-allocation dynamic-arrays