在C语言中是不是任意的同类型指针都可以比较大小,为什么?

我在《C和指针》上看到,如果不是指向同一个数组的指针,比较大小是没有定义的,而在很经典的内存拷贝函数memcpy上就没有看出这一点,可是编译运行都没有错误,结果也正确。难... 我在《C和指针》上看到,如果不是指向同一个数组的指针,比较大小是没有定义的,而在很经典的内存拷贝函数memcpy上就没有看出这一点,可是编译运行都没有错误,结果也正确。
难道是《C和指针》上面的描述错了吗?
展开
 我来答
我爱学习112
高粉答主

2021-01-16 · 每个回答都超有意思的
知道大有可为答主
回答量:7259
采纳率:100%
帮助的人:169万
展开全部

指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。

对变量a的访问有两种方式:

一是直接按地址0x065FDF4H找到a的存储单元,从而对变量a进行访问;

二是按系统为p=&a分配的地址先找到p=&a,然后根据p,&a的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。

扩展资料

访问变量,首先应找到其在内存的地址,或者说,一个地址唯一指向一个内存变量,如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量,通过指针对所指向变量的访问,也就是一种对变量的“间接访问”。

设一组指针变量pa、pb、px、py、pm、pch1、pch2,分别指向上述的变量a、b、x、y、m、ch1、ch2,指针变量也同样被存放在内存,尽管所指向的变量类型不同,但是这些指针变量所占内存空间都是2个字节,而与所指向变量的类型无关。

热点那些事儿
高粉答主

2020-12-26 · 关注我不会让你失望
知道大有可为答主
回答量:8668
采纳率:100%
帮助的人:216万
展开全部

指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。

对变量a的访问有两种方式:

一是直接按地址0x065FDF4H找到a的存储单元,从而对变量a进行访问;

二是按系统为p=&a分配的地址先找到p=&a,然后根据p,&a的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。

扩展资料

通过利用指针,我们能很好地利用内存资源,使其发挥最大的效率。有了指针技术,我们可以描述复杂的数据结构,对字符串的处理可以更灵活,对数组的处理更方便,使程序的书写简洁,高效,清爽。

但由于指针对初学者来说,难于理解和掌握,需要一定的计算机硬件的知识做基础,这就需要多做多练,多上机动手,才能在实践中尽快掌握,成为C的高手。

过去,我们在编程中定义或说明变量,编译系统就为已定义的变量分配相应的内存单元,也就是说,每个变量在内存会有固定的位置,有具体的地址。由于变量的数据类型不同,它所占的内存单元数也不相同。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文正153
推荐于2016-05-13 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:642万
展开全部
当然可以了. 你都说了是"同类型". 在C语言里除了结构体, 相同类型都可以比较.
就算是不同类型的指针, 你也可以把它们转换为void*型的指针, 然后进行比较. 比较一个指针就相当于是两个无符整型进行比较.

如果你说的是指针指向的数据进行比较, 那更好理解了. int*是指向int的指针. 两个int*型的指针指向的都是int型数据. 而两个int型数据当然可以进行比较.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
推荐于2017-12-15 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-16 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1371万
展开全部
指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式