最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單分析C++指針的操作和運算

 更新時間:2015年07月23日 11:05:29   投稿:hebedich  
這篇文章主要介紹了簡單分析C++指針的操作和運算的相關資料,需要的朋友可以參考下

既然指針是一種數(shù)據(jù)類型,那么它也應該有對應的操作或運算,正如整數(shù)能做加減乘除一樣。但是每一種操作或運算都應該對這種數(shù)據(jù)類型有意義。比如兩個實數(shù)可以用關系運算得知哪個大哪個小,而兩個虛數(shù)卻不能使用關系運算,因為比較虛數(shù)的大小是沒有意義的。

  對于指針類型來說,可以使用的運算有:和整數(shù)做加法運算、和整數(shù)做減法運算、兩指針做關系運算。很顯然,指針類型的乘除法是沒有意義的,也是不允許的。

指針的加減運算

  指針的加減法和數(shù)的加減法是不同的。我們認為,指針只能夠和整數(shù)做加減法運算(包括和整型常量、變量做加減法和自增自減)。其實這也不難理解,內(nèi)存的存儲空間是按“個”計算的,不會出現(xiàn)半個存儲空間的情況。那么,指針的加減法是否在地址值上做加減呢?我們先寫一段程序來驗證一下指針加減法的運算結(jié)果:(程序8.3)

#include "iostream.h"
int main()
{
  int a[5]={1,2,3,4,5};
  int *aptr=&a[0];//把數(shù)組首元素的地址給指針
  int i=1;
  for (int j=0;j<5;j++)
  {
   cout <<'(' <<aptr <<")=" <<*aptr <<endl;//輸出指針內(nèi)存儲的地址和該地址的數(shù)據(jù)
   aptr=aptr+i;//指針和整型變量做加法
  }
  return 0;
}

運行結(jié)果:

(0x0012FF6C)=1
(0x0012FF70)=2
(0x0012FF74)=3
(0x0012FF78)=4
(0x0012FF7C)=5

  我們發(fā)現(xiàn),每次做了加法以后,地址值并不是相差1,而是相差了4。所以指針和整數(shù)做加法并不是簡單地將地址值和整數(shù)相加。我們又發(fā)現(xiàn),每次做了加法以后,能夠輸出原先指針所指的下一個元素。根據(jù)數(shù)組在內(nèi)存中的存儲情況我們不難得出這樣一個結(jié)論:指針和整數(shù)C的加減法是指針向前或向后移動C個對應類型的存儲區(qū)域,即可以得到以下公式:
    新地址=舊地址±C*每個對應數(shù)據(jù)類型的變量在內(nèi)存中所占字節(jié)數(shù)

  因為每個int變量在內(nèi)存中所占字節(jié)數(shù)為4,所以在程序8.3.1中每做完一次加法,新地址=舊地址+1*4=舊地址+4。如右上圖8.3所示。

指針的關系運算

  我們知道關系運算有等于、大于、小于、大于等于、小于等于和不等于六種。對于指針來說,等于和不等于就是判斷兩個指針的值是否相同或不同,即兩個指針是否指向了相同或不同的地方。而大于和小于是判斷指針的值哪個大哪個小。值較小的在存儲器中的位置比較靠前,值較大的在存儲器中的位置比較靠后。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關文章

  • C語言報錯:Buffer Overflow的原因和解決辦法

    C語言報錯:Buffer Overflow的原因和解決辦法

    Buffer Overflow是C語言中常見且危險的內(nèi)存錯誤之一,它通常在程序試圖向緩沖區(qū)(如數(shù)組或內(nèi)存塊)寫入超過其容量的數(shù)據(jù)時發(fā)生,本文將詳細介紹Buffer Overflow的產(chǎn)生原因,提供多種解決方案,需要的朋友可以參考下
    2024-07-07
  • Qt基礎開發(fā)之Qt多線程類QThread與Qt定時器類QTimer的詳細方法與實例

    Qt基礎開發(fā)之Qt多線程類QThread與Qt定時器類QTimer的詳細方法與實例

    這篇文章主要介紹了Qt基礎開發(fā)之Qt多線程類QThread與Qt定時器類QTimer的詳細方法與實例,需要的朋友可以參考下
    2020-03-03
  • C語言學生信息管理系統(tǒng)設計與實現(xiàn)

    C語言學生信息管理系統(tǒng)設計與實現(xiàn)

    這篇文章主要為大家詳細介紹了C語言學生信息管理系統(tǒng)設計與實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 使用Qt/C++實現(xiàn)WGS84,高德GCJ-02與百度BD-09坐標系間相互轉(zhuǎn)化

    使用Qt/C++實現(xiàn)WGS84,高德GCJ-02與百度BD-09坐標系間相互轉(zhuǎn)化

    這篇文章主要為大家詳細介紹了如何使用Qt實現(xiàn)WGS84、高德GCJ-02與百度BD-09坐標系間相互轉(zhuǎn)化,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-07-07
  • 詳解C++中typedef 和 #define 的區(qū)別

    詳解C++中typedef 和 #define 的區(qū)別

    這篇文章主要介紹了C++中typedef 與 #define 的區(qū)別,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 簡單談談C++ 頭文件系列之(iosfwd)

    簡單談談C++ 頭文件系列之(iosfwd)

    本文給大家分享的是小編關于頭文件系列的(iosfwd)的簡單講解,所謂iosfwd,其實就是“input output stream forward”,下面我們來詳細看看
    2017-02-02
  • C語言實現(xiàn)用?*?打印X形圖案

    C語言實現(xiàn)用?*?打印X形圖案

    這篇文章主要介紹了C語言實現(xiàn)用?*?打印X形圖案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • c++中引用和指針的區(qū)別和聯(lián)系

    c++中引用和指針的區(qū)別和聯(lián)系

    許多人對于引用和指針的區(qū)別與聯(lián)系很糾結(jié)(包括我在內(nèi)O(∩_∩)O哈哈~),最近看到一篇關于引用和指針區(qū)別和聯(lián)系的文章,感覺茅塞頓開,在這里和大家分享下
    2014-04-04
  • C語言銀行儲蓄系統(tǒng)源碼

    C語言銀行儲蓄系統(tǒng)源碼

    這篇文章主要為大家詳細介紹了C語言銀行儲蓄系統(tǒng)源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實現(xiàn)高性能轉(zhuǎn)換大小寫算法示例

    C++實現(xiàn)高性能轉(zhuǎn)換大小寫算法示例

    大小寫轉(zhuǎn)換是我們作為一名程序員經(jīng)常會遇到,也必須要會的一個功能,下面這篇文章主要給大家介紹了關于C++實現(xiàn)高性能轉(zhuǎn)換大小寫算法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2018-01-01

最新評論

五峰| 溧水县| 西城区| 响水县| 城口县| 合川市| 西峡县| 上高县| 徐水县| 德化县| 蒙山县| 赞皇县| 石城县| 吉木乃县| 武穴市| 呼和浩特市| 阿克| 三明市| 平昌县| 疏勒县| 巴里| 天台县| 杭锦旗| 芜湖市| 宿州市| 景德镇市| 鄂伦春自治旗| 梧州市| 东平县| 吴川市| 临沭县| 将乐县| 海盐县| 厦门市| 巴彦淖尔市| 邵东县| 新干县| 阿鲁科尔沁旗| 郁南县| 鹤峰县| 遵化市|