#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是非标准的。

09-12 13:21