问题遇到的现象和发生背景
*p=&i 和 p=&i 有啥区别啊?人已经蒙了
看到这个问题,可能你对指针还不是很了解。
先来看下这个 int a = 10;
你在使用的时候直接使用a 就可以,a 就是10,也就是你在运算的时候,a 都会用10 替代掉,说白了,就关心值,不关心a还是b,只要有值就行;
。。。
明白上面就好办了。。
int *p;
这里定义了一个指针变量,说白了, 就是个变量,只不过这个变量是指向一个内存地址,例如0x1234。
同样的,在直接使用p 的时候,都会用p 指向的地址代替,将p 都使用0x1234 代替;
那如果我想看到地址里面存了什么值呢?
*p,表示你指向的那个内存地址里面存的什么值。。
回到你的问题,
*p = &i;就是指向的那个内存地址里面的那个值要换一换啦,换成了什么?换成了i 的地址了;
p = &i;上面说到p 就代表指向的那个地址,例如0x1234,但是这里0x1234 要换一换啦,换成什么?换成了i 的地址,例如0x3456,以后使用p 的地方都换成0x3456
明白了否?