gpt4 book ai didi

c - 数组的动态数组

转载 作者:行者123 更新时间:2023-11-30 18:55:48 25 4
gpt4 key购买 nike

如果我有:

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 大小的数组))

最佳答案

这个typedef 构造相当于:

#include <stdio.h>

void someFunction(void) {
char (*pos)[2];
pos = malloc(sizeof(*pos) * 2);

pos[0][0] = 1;
}

int main(void) {
someFunction();
return 0;
}

这意味着pos是指向char的二元素数组的指针。您可以像使用固定列大小为 2 的二维数组一样使用。行数由 malloc() 调用控制,在您的情况下,它也恰好是两行。

关于c - 数组的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365174/

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