#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。
我一直以为指针是变量,就像其他变量一样,但是分配变量似乎不仅会改变指针,还会改变分配给它的变量。
我是菜鸟,这对我到目前为止所学到的并不常见:
为什么我是新秀?
好吧,对于新程序员来说,指针通常非常难掌握,我相信这个问题将为新手带来价值,如果他们不想被Google搜索分散注意力或者无法支付50美元以上的钱,那么指针如何工作一本书。
我认为答案是:
我认为,由于指针不同,因此除了为变量赋值之外,它还给值BACK并更新给定的值。我不知道为什么,没有适当的证据也无法证明为什么。
答案 0 :(得分:1)
b
正在存储a
的地址。因此,当您对*b
进行更改时,您实际上是在对a
进行更改。
当更新值b
指向(*b = a + 2
时,您将a
更新为a + 2
,在这种情况下,由于a
为0之前。
答案 1 :(得分:1)
指针本身的概念仅具有变量的地址。您对指针所做的所有内容更改都会在指针所指向的变量中产生效果。如果您改为:
b = a + 2;
变量a仍将保留相同的内容。
答案 2 :(得分:0)
@The_Senate:
1) int * b =&a; ==>这表示b是指向地址为var a的整数的指针
2) * b = a + 2; ==>这意味着您正在修改b处的地址值a。因此,您实际上是在修改a的值。
希望这会回答您的问题。