gpt4 book ai didi

c - 在数组初始化期间从不兼容的指针类型进行初始化

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:22 26 4
gpt4 key购买 nike

我有以下代码:

int main()
{
int* abc[] ={
[3] = (&(int[3]){1,2,3}),
[2] = (&(int[2]){4,5})
};
printf("\n abc[3][1] = %d \n",abc[3][1]);
return 0;
}

我正在尝试设置我的数组 abc ,以便数组的特定索引指向不同的整数数组。

稍后,我会修改它以使用宏,以便在预处理期间初始化数组,因此采用了这种方法。

代码工作正常,但我收到警告:

warning: initialization from incompatible pointer type

这是因为我的数组 abc 被声明为指向整数但它实际上指向整数数组吗?我怎样才能让这个警告消失?

最佳答案

您在复合文字中使用的类型不正确。

数组的元素是int *,但是使用&时,复合字面量的类型是int (*)[3]int (*)[2]

应该是:

int* abc[] ={
[3] = ((int[3]){1,2,3}),
[2] = ((int[2]){4,5})
};

现在 int[3]int[2] 都衰减到 int *

关于c - 在数组初始化期间从不兼容的指针类型进行初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53155181/

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