c - 当指针被分配一个地址时,地址的分配是否会更新地址本身?
问题描述
#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 并更新了它所给出的值。我不知道为什么,如果没有适当的证据,我也无法证明为什么。
解决方案
b
正在存储 的地址a
。因此,当您对 进行更改时*b
,您实际上是在对 进行更改a
。
当您将值b
点更新为 ( *b = a + 2
) 时,您将更新a
为a + 2
,在本例中为 2,因为a
之前为 0。
推荐阅读
- arrays - 仅更改数组中第一个匹配对象的值
- html - 抓取网页 vba oncick
- linux - 如何在 Pymol 中改变角度?
- mysql - 以 # 符号开头的文本未插入到数据表中
- spring - Tomcat 在 http://localhost:8080/ 中工作,但在尝试 http://localhost:8080/page/home.jsp 时不起作用
- r - 从内部函数覆盖父函数中的变量而不在父函数外部创建变量
- c# - Azure 函数无法加载“System.UriTemplate”
- wordpress - WordPress 通过 .htaccess 强制执行 https
- ios - 从iphone中提取文件日志
- javascript - 通过使用 ajax 更改 HTML 内容来制作多步表单无法正常工作