我是C语言中的自学指针,我的问题是:*p=vec[n]
与编写p=&vec[n]
相同,其中n
只是一个索引,而p
是指针?
答案 0 :(得分:6)
答案 1 :(得分:3)
它们是两个不同的表达式:
指针是一种保存内存地址的类型。所以当你写:
p = &vec[n]
指针的地址与n
的第vec
个元素的地址相同
写作时
*p = vec[n]
您实际上声明位于p
地址的内存应该与n
元素vec
的内容相同。
以下内容可能会清楚:
| original | p = &vec[n] | *p = vec[n]
------+-----------------+-----------------+----------------
data | Address Content | Address Content | Address Content
------+-----------------+-----------------+----------------
p | 0x12345 0000000 | 0xabcde 0000005 | 0x12345 0000005
vec[n]| 0xabcde 0000005 | 0xabcde 0000005 | 0xabcde 0000005
答案 2 :(得分:2)
不,不是。
当您执行*p = ...
时,会为p
当前指向的位置分配一个值。
使用p = ...
,您将p
指向其他地方。