#include<stdio.h>
#include<conio.h>
int main()
{
int const anila=10;
int *ptr=&anila;
clrscr();
printf("%d",*ptr);
getch();
return 0;
}
为什么在程序中出现警告什么是可疑的指针转换?而*ptr=&anila;*ptr的地址是anila如何正确打印10个?
最佳答案
您收到该警告的原因是编译器可以警告您不要意外修改变量:
#include<stdio.h>
int main()
{
int const anila=10;
int *ptr=&anila;
*ptr = 100; // --> This should not be done since you declare anila as const
printf("%d",*ptr);
return 0;
}
当你作为一个程序员不想发生这样的事情(即修改一个标记为只读的变量)时,上面的代码可以工作。如果这样做,代码将无法编译:
int const anila=10;
int const *ptr=&anila;
程序c:6:6:错误:分配只读位置'*ptr'
*ptr=100;
另外,请注意
anila
是非标准的。