gpt4 book ai didi

c - 不兼容的指针类型警告重新指向 int 指针数组的指针

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

我编写了以下代码,声明了一个由 5 个指向 int 的指针组成的数组,然后声明了一个指向上述数组地址的指针:

int* arr[5];
int** p=&arr;

在使用 gcc 编译时,我收到以下警告:

initialization from incompatible pointer type [-Wincompatible-pointer-types] int** p=&arr;

为什么int** p是错误的指针类型,&arr不是一个指向int指针的指针吗?

非常感谢。

最佳答案

在声明中

int* arr[5];

arr5 int 指针的数组。假设它指向 a,它是 5 整数数组。看起来像

int a[5]=  {1,2,3,4,5};
int* arr[5] = {a,a+1,a+2,a+3,a+4};

现在当你写

int** p=&arr;

这是错误的,因为 pint** 类型,它应该指向 arr 而不是 &arr >.

&arr 不是指向 int 指针的指针吗?不,不是,&arr指向 int 的指针指向 int a[0] 等的指针数组。

正确的方法是

int **p= arr;

现在您可以使用 p as 打印数组 a 元素

printf("%d %d\n",*p[0],*p[1]);

关于c - 不兼容的指针类型警告重新指向 int 指针数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50853326/

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