假设我们声明一个变量
int i = 10;
Run Code Online (Sandbox Code Playgroud)
我们有这两个声明 -
printf("%d",i);
Run Code Online (Sandbox Code Playgroud)
printf("%d",*(&i));
Run Code Online (Sandbox Code Playgroud)
这两个语句打印相同的值,即10
从我对指针的理解来看,不仅它们的输出是相同的,而且上面两个语句的含义完全相同。它们只是同一声明的两种不同写法。
然而,我发现了一个有趣的代码——
#include <stdio.h>
int main(){
const int i = 10;
int* pt1 = &i;
*pt1 = 20;
printf("%d\n", i);
printf("%d\n", *(&i));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,结果是——
10
20
Run Code Online (Sandbox Code Playgroud)
这表明 ifi与限定符声明时*(&i)的含义不同。谁能解释一下吗?iconst