gpt4 book ai didi

c - 将二维数组保存在指针数组中

转载 作者:行者123 更新时间:2023-12-02 09:06:11 25 4
gpt4 key购买 nike

我有不同大小的二维数组,并希望将它们全部存储到指针数组中

int test0[][2] = {{0, 2},
{1, 3}};
int test1[][3] = {{10, 20, 30},
{40, 50, 60},
{70, 80, 90}};

int *t = malloc(2*sizeof(int));

t[0] = (int) test0;
t[1] = (int) test1;

free(t);

现在,test1test2的指针地址存储在t[0]t[1]<中分别

但我无法像t[0][0][0]那样访问它们

这可能吗?你会怎么做?

最佳答案

您无法创建不同类型/大小的对象数组,并且在您的情况下,数组的大小不同。

你需要这样的东西:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int test0[][3] = {{0, 2},
{1, 3}};
int test1[][3] = {{10, 20, 30},
{40, 50, 60},
{70, 80, 90}};

int (**t)[3] = malloc(sizeof(*t) * 2);

t[0] = test0;
t[1] = test1;

printf("t[1][1][1] = %d\n", t[1][1][1]);

free(t);

return 0;
}

输出:

50

但请注意,您不需要使用动态内存 (malloc):

int (*t[2])[3]; // array 2 of pointer to array 3 of int

也可以。

关于c - 将二维数组保存在指针数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167707/

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