小编Abh*_*aha的帖子

C 中直接通过名称访问变量和使用 *(&variable) 访问变量有什么区别?

假设我们声明一个变量

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

c pointers

3
推荐指数
1
解决办法
99
查看次数

标签 统计

c ×1

pointers ×1