指针篇:关于指针类型的相同点与不同点

虽然指针类型如int*, char*等在内存中占4个字节,但它们的区别在于解引用时对变量的修改范围。int*可改变4字节,char*仅能改变1字节。此外,指针类型也决定了指针移动的步长,例如int*每次移动4字节,char*移动1字节。这种差异在处理数组时尤为明显,不同的指针类型会导致不同的遍历和修改效果。" 112153336,10561300,Struts2框架详解与实战指南,"['Struts2', 'MVC框架', 'Java开发', 'Web开发', 'Action']
摘要由CSDN通过智能技术生成

指针类型所占空间的大小一般都为4个字节,像char*,int*,double*,float*,只要它们是指针类型,不论它们的类型是int还是char还是其它,其指针类型所占内存空间大小都是4个字节,都是这意味着它们之间就没有什么区别吗?

答案肯定是错的,我们说像把一个地址用指针变量去存放起来,那么如果仅仅只是起到存放的作用的话,当然像我们常见的指针都是可行的,因为他们都是在内存空间中占了4个字节,有足够的空间去存放一个4个字节以内的地址。那它们的区别在什么地方呢?

它们的区别就在于当我们想通过解引用去通过指针变量改变原变量时,像初始化一个整型变量a=0x11223344,取地址a,将它放在指针变量pb中,分别用int* pb=&a和char* pc=&a都可以达到存放这个a地址的目的,但是想用*pb,*pc去改变a的值的话,我们知道四个字节的地址存放16进制数的a时,四个字节空间分别存放11,22,33,44,而让*pb=0和让*pc=0它们所得到的结果大不相同,由*pb改变的可以让四个字节空间都变成00,00,00,00,00,而由*pc改变的只能让一个字节空间变成00,即11,22,33,00,这是因为int有四个字节,char只有一个字节,所以int能够改变4个字节空间的指针变量对应的空间,而char只能够改变1个字节空间的指针变量对应的空间,类似的,像double可以改变8个字节空间。

同样的,如果是像通过指针来查看变量地址是,指针类型决定了指针走一步能走多远,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值