首页 > 解决方案 > 当指针被分配一个地址时,地址的分配是否会更新地址本身?

问题描述

#include <stdio.h> 
main() 
{   
   int a=0;
   int *b=&a;  
   *b = a + 2;  
   printf("%d", a); 
} 

我为什么要问这个问题?之前已经被问过1000次了,对吧?

不完全是。. . . 看,到目前为止,我已经检查了这个网站上提出的这种性质的问题。他们回答了一些关于指针的问题,但他们没有回答指针对分配给它的值的作用。

指针对分配给它的值有什么作用?

所以,我在 C 中有这个代码,它有一个简单的功能,然后将 b 指针分配给 a 的地址。b 指针用值 a+2 更新,奇怪的是在此之后 a 也更新了 2。

我假设指针和其他变量一样是变量,但分配变量似乎不仅会改变指针,还会改变分配给它的变量。

我是一个菜鸟,这对于我迄今为止所学到的东西并不典型:

为什么我是一个新秀相关?

好吧,新程序员通常很难掌握指针,我相信如果他们不想被谷歌搜索分心或不能为一本书支付 50 美元以上的费用,那么这个问题将为新手带来关于指针如何工作的价值。

我认为答案是:

我认为由于指针不同,因此除了分配变量的值之外,它还给出了值 BACK 并更新了它所给出的值。我不知道为什么,如果没有适当的证据,我也无法证明为什么。

标签: cpointers

解决方案


b正在存储 的地址a。因此,当您对 进行更改时*b,您实际上是在对 进行更改a

当您将值b点更新为 ( *b = a + 2) 时,您将更新aa + 2,在本例中为 2,因为a之前为 0。


推荐阅读