C++中,图片中第三题为什么是错的啊?求解!!,
展开全部
指针只是指向数据的首地址,比如刚才说的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,显然不相等。
(首地址)
|
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,显然不相等。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询