c - C中的指针赋值

标签 c pointers

int y=1;
int k=2; 
int *p1; 
int *p2; 
p1=&y;
p2=&k;
p1=p2;
*p1=3;
*p2=4;
printf("%d",y);

我得到的输出为 1,有人能解释一下为什么吗!!我原以为是 4。

最佳答案

下面的评论解释了这是如何工作的:

int y=1;
int k=2; 
int *p1; 
int *p2; 
p1=&y; //pointer p1 holds the address of y
p2=&k; //pointer p2 holds the address of k
p1=p2; //pointer p1 now holds the address which p2 holds, which is the address of k
*p1=3; //the value which p1 points to is now 3 (so k equals 3 as well)
*p2=4; //the value which p2 points to is now 4 (so k equals 4 as well)
printf("%d",y); //y is still 1

但是,如果您执行了 printf("%d",k);,则会打印值 4

关于c - C中的指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496565/

相关文章:

objective-c - 多个if条件

c - 禁用 shell 时缓冲区溢出?

c - 为什么这些构造使用增量前和增量后未定义的行为?

c - 串行代码花费的时间不同,因为它是单独运行或与并行代码一起运行

c++ - 通过引用传递指针是执行此操作的正确方法吗?

c - 原型(prototype) "const int* foo(int)"是什么意思,特别是与 "int* foo(int)"相比?我只理解第二个

c - 为什么这个程序中的arr与*arr相同?

更改下一个指向结构的值

c - C语言中,如何用指针计算一个字符串中有多少个元音字母?

c - 可以在单个 malloc 中分配 2D 数组并且仍然可以使用 [ ][ ] 语法吗?