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

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:03:11
按4楼所说,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,显然不相等。

将q的地址赋给p,那么*p的确等于*q!但是*p=*q意思为赋值,楼主到底要问什么啊?是它们的意思一样吗?

如果不是意外,这说法没钱。因为两个指针指向同一个地址,这个地址上放的是一种数据。

NG
在C语言里”=”表示附值,不表示相等

不对.
在C语言里”=”表示附值,不表示相等.