gpt4 book ai didi

c++ - C- 不兼容的指针类型用“int”类型的表达式初始化 'int *'

转载 作者:行者123 更新时间:2023-11-30 17:06:23 25 4
gpt4 key购买 nike

我有一个问题,我不明白为什么编译器会向我发出此警告:

Incompatible pointer types initializing 'int *' with an expression of type 'int [2][2]'

int matrice[2][2]={4,7,3,6};
int* prova2=matrice;
for (int i=0; i<4; i++) {
printf("%d",*(prova2+i));
}

从逻辑上讲,它是有效的,但我想知道为什么 IDE 会向我显示这一点。我尝试对数组执行相同的操作,但它的工作原理没有任何警告。

我知道当我声明一个数组时

int a[4]; 

a 包含数组在内存中分配的地址。因此,之间没有差异(类型差异)

int a[4]; 

int *b= a;

为什么会有差异

int matrice[2][2]

int* prova2=matrice;

最佳答案

T 数组 可以转换为 T*matrice 是一个 int[2] 数组,因此可以隐式转换为 pointer to int[2],即可以这样写:

int (*prova2)[2] = matrice;

(但这显然不是你想要的)。

要获取指向第一个元素的指针,您可以执行以下操作:

int* prova2 = &matrice[0][0];

关于c++ - C- 不兼容的指针类型用“int”类型的表达式初始化 'int *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755899/

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