作业帮 > 综合 > 作业

设p,q是指针,若p=q,则*p=*q,这种说法对么?为什么?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/13 11:30:58
设p,q是指针,若p=q,则*p=*q,这种说法对么?为什么?
按4楼所说,p与q指向同一地址的话,那么那个地址里所存储的数据应该是一样的呀
设p,q是指针,若p=q,则*p=*q,这种说法对么?为什么?
指针只是指向数据的首地址,比如刚才说的a,在内存中的存储状况可能是(16进制表示,32位地址):
(首地址)
|
00 01 00 00
如果是int型指针,则所指向的数据为4个字节(从首地址开始数4个字节),则值为0x00000100(内存中是倒着存储的,表示时要正过来),也就是256
如果是char型指针,则所指向的数据为1个字节,则值为0x00,也就是0

即使p与q相等,也不代表*p与*q相等.
关键就在于p与q的类型不一定相同!
比如:
int a = 256;
int* p = &a;
char* q = (char*)&a;
此时p与q指向同一个地址,即p的值与q的值相等
但*p为值为256,而*q的值为0,显然不相等.