c语言 - 是什么原因导致"warning: assignment from incompatible pointer type error"?



我试图在这里尝试指针算术,但我收到此警告。我无法理解这是哪里出了问题。

编写代码是为了玩指针算术,因为我的基础知识很弱。

printf("To Check ptrs t");
int var[3]={10,20,30};
int *ptr,i;
ptr=var;
for(i=0;i<3;i++)
{
printf("Address is %d t", ptr);
printf("Value is %d t", *ptr);
ptr++;
}
ptr=(int*)&var;
for(i=0;i<3;i++)
{
printf("Address is %d t", &ptr[i]);
printf("Value is %d t", ptr[i]);
}
ptr_arith.c:14:5: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ptr=&var;
^

不过,我得到了想要的输出。另外,当我使用

ptr=(int*) &var; 

,它没有给我任何错误。 因此,如果有人能告诉我是什么原因导致它"不兼容",我将不胜感激。

这很简单。

您应该按以下方式将数组衰减到指针:

int arr[10];

arr属于int *类型

&arr[0]- 类型为 int *

&arr的类型是指向 10 个整数数组的指针。

在你的代码中,你应该使用

ptr = varptr = &var[0]var&var[0]与指针ptr具有相同的类型。

&var不同的类型,因此警告。

如果要使用指针存储数组的地址,请在分配数组地址之前使用类型转换

相关内容

最新更新