作业帮 > 综合 > 作业

#include void main() { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 18:48:53
#include void main() { int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm);
*(p=&n)=*pk*(*pm);
我以为*(p=&n)与*n等价,不就是6=2*4;
但实际是n=8
我认为指针中的星号意为所指地址的内容.(除多维数组指针.)
*(p=&n)=*pk*(*pm);
拆解表达式如下
p=&n 即指针p 指向n的地址
*(p=&n) 即 *p 即n的值
n = 2*4 = 8
再问: 书上的星号是去指针指向对象的内容。*p是n的值但n有赋值。我不好理解n=8这步。麻烦解释下。 谢谢
再答: 举例: n在内存中的地址是 0x1234, 而内存地址0x1234存放的数据是 6(即n的值) p在内存中的地址是 0x5678, 而内存地址0x5678存放的数据是 0x1234(即n的地址) 我们所谓的 n 就是 内存地址0x1234中存放的数据 6 同理 p就是 内存地址0x5678中存放的数据 0x1234 而 *p的意思是把 内存地址0x5678中存放的数据 做为地址,这个地址存放的数据。 即 *p 和 n 表示了同一个 内存地址, = 就是给这个地址赋值