999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C++中的指針的解析

2011-12-29 00:00:00何淼
考試周刊 2011年18期


  摘 要: 指針是C++語言中最難掌握的概念之一,錯誤地使用指針所帶來的后果往往是很嚴重的,有時甚至會導致系統崩潰。因此,正確使用指針是C++語言學習的重點和難點。
  關鍵字: C++指針 地址 解析
  
  計算機內存是由二進制位組成的,為了便于訪問和管理,每8位組成一個字節,一個字節稱為一個存儲單元。通常,系統對每個存儲單元按期順序進行編號,編號能惟一確定任何一個字節的位置,就像根據房間號能惟一確定任何一個房間一樣,于是編號被形象地稱為地址。程序所處理的每一個數據必須存放于計算機內存中才能運行,這些數據按其所屬的數據類型,需要占據一定數量的連續的存儲單元,而這些存儲單元都位于內存的某個特定位置,都有一個惟一的起始地址。
  因為地址指示了字節在存儲器中的位置,所以地址也被形象地稱為指針。指針是一個存儲單元的地址值,用來存放地址(即指針)的變量稱為指針變量,常常將指針變量簡稱為指針。C++中的指針按照它所指向的對象可以劃分為變量指針、數組指針、函數指針、對象指針、類的數據成員指針和類的成員函數指針。
  一、變量的指針
  1.設type代表任意一種基本說明符,則:
  type x;//聲明了一個type型變量x。
  type*p;//聲明了一個type型指針變量p,“*”表示聲明的p是一個指針變量,p所指向的變量的類型是type型。
  p=&x;//指針變量p指向了變量x,&是地址符號,&x表示變量x的地址。只有變量x的數據類型和指針變量p所指向的變量的數據類型相同才可作此操作。
  2.可聲明多級指針變量,如:
  type**p;//聲明了一個指向type類型的二級指針變量p。
  二、數組與指針
  1.數組的指針
  type a[3];//聲明了一個具有三個type類型數據的數組。
  在這里a有兩個涵義:
  ①作為數組名,表示數組這個整體。
  ②表示這個數組在內存所占的一段連續的存儲單元的起始地址,也就是這個數組中第一個元素的地址,即&a[0]。
  type*p;//聲明了一個type型指針變量p。
  p=a;//將數組的起始地址賦給指針變量,使指針變量p指向數組,相當于p=&a[0]。
  2.數組指針
  type(*p)[3];//聲明了一個指針p,這個指針指向具有3個的type類型元素的數組。
  3.指針數組
  type*p[3];//聲明了一個具有三個指針元素的數組,每個元素都是可以指向type類型數據的指針變量
  三、函數與指針
  1.返回指針值的函數
  函數的返回值可以是整型、浮點型、字符型等基本類型,也可以是指針類型。如:int*f(),則函數的返回值是一個指向整型數據的指針,稱這個函數為返回指針值的函數。
  type*(形參表)
  {
  ……
  }//定義了一個返回指針值的函數
  void main()
  {
  type*p;
  p=f(實參表);//函數調用,p接收的是函數f返回的指向type類型數據的指針
  ……
  }
  2.函數指針
  函數名就是函數的入口地址,函數指針就是指向函數入口地址的指針變量,即存放函數入口地址的變量。
  type(*p)(type x);//定義了一個名為p的函數指針
  type f(type x)
  {
  ……
  }//定義名為f的type函數。
  p=f;//將函數f()的入口地址賦給函數指針變量p,即使指針變量p指向函數f(),只能將與函數指針變量具有同類型、同參數的函數名賦給函數指針變量。
  四、對象指針
  設有一個類A,a和f()分別是類A公有數據成員和公有成員函數,則:
  A t;//聲明了一個類A的對象t,則&t是對象t的地址。
  A*p;//聲明了一個指向類A的指針變量p。
  p=&t;//將指針變量p指向了類A的對象t。
  用指針p調用對象t的數據成員和成員函數的格式為:p→a;和p→f()。
  五、類的成員數據指針
  設t是A類的一個對象,a是A的一個非靜態type型成員數據,s是A的一個靜態type1型數據成員,則:
  1.①A∷a的相對指針常量為&A∷a;
  ②A∷s的物理指針常量為&A∷s。
  2.①可以指向A類的type型非靜態成員的指針p1的聲明格式為:type A∷*p1;
  ②可以指向A類type型靜態成員的指針p2的聲明格式為:type1*p2。
  3.①使p1指向A∷a的方式為:用& A∷a初始化p1或在聲明了p1后向p1賦值;
  ②使p2指向A∷s的方式為:用& A∷s初始化p2或在聲明了p2后向p2賦值。
  4.①用p1而不用a來訪問t.a的格式為:t.*p1;
  ②用p2而不用s來訪問t.s的表達式為*p2。
  六、類的成員函數指針
  設t是A類的一個對象,f(FL1)是A類的一個type型非靜態的函數成員,g(FL2)是A類的一個type1型靜態函數成員,則:
  1.①A∷f()的相對指針常量為A∷f;
  ②A∷g()的物理指針常量為A∷g。
  2.①可以指向A的非靜態type型形參表為FL1的函數成員的指針P1的聲明格式為type(A∷*p1)(FL1);
  ②可以指向A的靜態type1型形參表為FL2的函數成員的指針p2的聲明格式為:type1(*p2)(FL2)。
  3.①使p1指向A∷f()的方式是:用A∷f初始化p1或在聲明了p1后向p1賦值;
  ②使p2指向A∷g()的方式是:用A∷g初始化p2或者在聲明了p2之后向p2賦值。
  4.①用p1而不用f來訪問t.f()的格式為:(t.*p1)(實參表);這里的“*”為指針說明符而不是指針運算符;
  ②用p2而不用g()來訪問t.g()的格式為:p2(實參表)。
  指針是C++語言中最難掌握的概念之一,錯誤地使用指針所帶來的后果往往是很嚴重的,有時甚至會導致系統崩潰。因此,正確使用指針是C++語言學習的重點和難點。
  
  參考文獻:
  [1]譚浩強.C++語言程序設計.清華大學出版社.
  [2]周正德,侯正昌.C++程序設計(第2版).電子工業出版社.
  [3]鄧振杰.C++程序設計.人民郵電出版社.
  [4]余建軍,張鐵頭.C++程序設計.中國計劃出版社.

主站蜘蛛池模板: 亚洲国产成人精品无码区性色| 欧美区一区二区三| 亚洲无码精品在线播放| 在线亚洲小视频| 精品亚洲麻豆1区2区3区| 欧美一级片在线| 亚洲第一精品福利| 天天综合网亚洲网站| 黄色在线网| 国产亚洲欧美日韩在线观看一区二区| 伦伦影院精品一区| 男女男精品视频| 精品视频一区二区观看| 国产中文一区a级毛片视频| 内射人妻无套中出无码| 亚洲第一视频网| 天天摸夜夜操| 亚洲免费人成影院| 97成人在线视频| 一级福利视频| 亚洲开心婷婷中文字幕| 欧美国产菊爆免费观看| 久久 午夜福利 张柏芝| 人妖无码第一页| 波多野吉衣一区二区三区av| 国产欧美日韩18| 在线免费观看a视频| 色婷婷丁香| 青青草原国产精品啪啪视频| 国产永久无码观看在线| 亚洲婷婷丁香| 成人亚洲国产| 一级毛片网| 国产精品自在拍首页视频8| 毛片手机在线看| 国产精品欧美日本韩免费一区二区三区不卡 | 日韩成人午夜| 全部无卡免费的毛片在线看| 亚洲午夜久久久精品电影院| 午夜精品一区二区蜜桃| 国产Av无码精品色午夜| 国产国语一级毛片| 成年人免费国产视频| 欧美精品v日韩精品v国产精品| 2019年国产精品自拍不卡| 欧美a在线| 久草中文网| 亚洲VA中文字幕| 热re99久久精品国99热| 91视频免费观看网站| 色婷婷狠狠干| 免费又黄又爽又猛大片午夜| 午夜视频www| 国产精品 欧美激情 在线播放| 亚洲视频三级| 丁香亚洲综合五月天婷婷| 狠狠色成人综合首页| 色亚洲激情综合精品无码视频 | 在线精品欧美日韩| a级毛片网| 亚洲欧美不卡视频| 日韩av无码精品专区| 久久综合伊人77777| 99国产精品免费观看视频| 国产三级a| 99资源在线| 最新国语自产精品视频在| 亚洲激情区| 国产18页| 久久国产精品夜色| 91在线国内在线播放老师| 国产激情第一页| 伊人精品视频免费在线| 久久精品国产精品青草app| 亚洲视频在线青青| jizz国产视频| 久久久四虎成人永久免费网站| 色综合手机在线| 黄色网页在线观看| av午夜福利一片免费看| 精品国产三级在线观看| 91视频青青草|