Dic*_*cas -2 c variables pointers
我很迷惑
这段代码片段中发生了什么:
int *a;
a = 1;
*a = 1;
Run Code Online (Sandbox Code Playgroud)
与这一个:
int b;
b = 2;
*b = 2;
Run Code Online (Sandbox Code Playgroud)
int *a;
a = 1;
*a = 1;
Run Code Online (Sandbox Code Playgroud)
a是指针,因此赋值a = 1无效.(在C标准术语中,它是一个"约束违规",需要诊断.)您的编译器必须至少打印一个警告来进行此分配; 它应该完全拒绝它.(有些编译器可能会插入一个隐式转换,就好像你已经写过了a = (int*)1;你不应该依赖它.)
int b;
b = 2;
*b = 2;
Run Code Online (Sandbox Code Playgroud)
b不是指针,因此*b无效.同样,您的编译器必须诊断错误,并应拒绝您的程序.
在这两种情况下,代码在C中没有明确的含义.