小编Nat*_*Lee的帖子

新声明后内存地址是否会改变?

在执行n1之后的"第0句"存储器地址之后,n2和*pn是ADDR:0061FF2C,0061FF28,0061FF24.执行1),2)和3)后他们会改变吗?我为每个代码都添加了printf,但它们似乎没有改变.从理论上讲,它们不应该因为变量被赋予新值而改变吗?

#include <stdio.h> 
int main(void) 
{
    int n1=3, * pn = &n1;
    int n2=0;

    printf("%p, %p, %p\n", &n1, &n2, &pn);  // 0)
    n2 = *pn;                           // 1)
    *pn = n2 + 1;                   // 2)
    n1 = *pn + *(&n2);                      // 3)
    printf("%d, %d, %d\n",n1,n2,*pn);           // 4)
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers declaration

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

标签 统计

c ×1

declaration ×1

pointers ×1