运行以下程序后:
gcc -c volVars.c -o volv
./volv
它编译。
#include<stdio.h>
void main(){
printf("study of volatile pointers\n");
const int lConstInt=6;
printf("\n const int is %d\n",lConstInt);
volatile const int *lvcint=&lConstInt;
printf("volatile const int after assignment = %d\n",*lvcint);
//*lvcint=*lvcint+1; uncommenting this gives compilation error
int *track = lvcint;
*track = *track + 1;
printf("modified the lcoation = %d\n",*track);
}
如果我取消注释lvcint=*lvcint+1;
行,它会按预期给出错误。lvcint
但是,如果我使用非常量的轨道引用该指针 ( ),我可以修改它的内容。我在该行收到警告,但最后我能够修改只读位置的内容。gcc 中是否有任何错误或者我缺少什么。