C语言指针变量的运算
前言
指針變量也是可以進(jìn)行運(yùn)算的,如指針變量對其自身加上某個整數(shù)或減去某個整數(shù),這在內(nèi)存上體現(xiàn)為:相對這個指針向后偏移多少個單位或向前偏移了多少個單位,這里的單位與指針變量的類型有關(guān)。在32bit環(huán)境下,int類型占4個字節(jié),float占4字節(jié),double類型占8字節(jié),char占1字節(jié)。
【注意】一些處理整數(shù)的操作不能用來處理指針。例如,可以把兩個整數(shù)相乘,但是不能把兩個指針相乘。
示例程序
#include?int?main(void) {int?? ?a =?10, *pa = &a;float??b =?6.6, *pb = &b;char?? c =?'a', *pc = &c;double?d =?2.14e9, *pd = &d;//最初的值printf("pa0=%d, pb0=%d, pc0=%d, pd0=%d\n", pa, pb, pc, pd);//加法運(yùn)算pa +=?2;?pb +=?2;?pc +=?2;pd +=?2;printf("pa1=%d, pb1=%d, pc1=%d, pd1=%d\n", pa, pb, pc, pd);//減法運(yùn)算pa -=?1;?pb -=?1;?pc -=?1;pd -=?1;printf("pa2=%d, pb2=%d, pc2=%d, pd2=%d\n", pa, pb, pc, pd);return?0; }運(yùn)行結(jié)果為:
pa0=6422268, pb0=6422264, pc0=6422263, pd0=6422248 pa1=6422276, pb1=6422272, pc1=6422265, pd1=6422264 pa2=6422272, pb2=6422268, pc2=6422264, pd2=6422256解析:
舉例說明pa0→pa1→pa2的過程,其他類似。pa0+2*sizeof(int)=pa1,pa1-1*sizeof(int)=pa2。因?yàn)閜a為int類型的指針,所以加減運(yùn)算是以4字節(jié)(即sizeof(int))為單位地址向前向后偏移的??聪聢D:
如圖:pa1所指向的地址在pa0所指向地址往后8字節(jié)處,pa2指向地址在pa1指向地址往前4字節(jié)處。
從本示例程序中,還可以看出:連續(xù)定義的變量在內(nèi)存的存儲有可能是緊挨著的,有可能是分散著的。
以上就是關(guān)于C語言指針變量運(yùn)算的一些總結(jié):指針變量與整數(shù)相加相減是相對該指針指向的地址向后向前偏移多少個單位。這里的單位不能認(rèn)為總是1。在32bit環(huán)境下,char類型指針的偏移單位才是1字節(jié),int類型指針偏移單位是4字節(jié),float類型指針偏移單位是4字節(jié),double類型指針偏移單位是8字節(jié)。
聲明:
本文于網(wǎng)絡(luò)整理,版權(quán)歸原作者所有,如來源信息有誤或侵犯權(quán)益,請聯(lián)系我們刪除或授權(quán)事宜。
總結(jié)
以上是生活随笔為你收集整理的C语言指针变量的运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 次新股涨停怎么买进?
- 下一篇: 初学者怎样看懂k线图?