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++程序設計.中國計劃出版社.

主站蜘蛛池模板: 亚洲一区免费看| 国产小视频免费观看| 免费无码又爽又刺激高| 亚洲中文字幕在线观看| 亚洲天堂成人在线观看| 亚洲欧洲日本在线| 久久99国产精品成人欧美| 国产性生交xxxxx免费| 波多野结衣无码中文字幕在线观看一区二区 | 成年看免费观看视频拍拍| 日本黄色不卡视频| 不卡无码网| 香蕉eeww99国产在线观看| 国产精品污污在线观看网站| 国产91丝袜在线播放动漫| 台湾AV国片精品女同性| 午夜限制老子影院888| 久久黄色毛片| 91精品国产91久久久久久三级| 久久黄色毛片| 亚洲91精品视频| 自拍亚洲欧美精品| 人妻21p大胆| www成人国产在线观看网站| 成年人国产网站| 成人一级免费视频| 久久伊人操| 青青操国产视频| 亚洲Va中文字幕久久一区| 国产毛片网站| 无码一区二区三区视频在线播放| 波多野结衣在线se| 91一级片| 亚洲精品无码在线播放网站| 欧美亚洲国产精品第一页| 丰满人妻一区二区三区视频| 黄色网页在线观看| 在线看片免费人成视久网下载| 8090成人午夜精品| 欧美成人综合视频| 欧美一区二区人人喊爽| 国产亚洲欧美日韩在线一区| 国产黄色视频综合| 国产一级特黄aa级特黄裸毛片| 97se亚洲| 日韩免费成人| 亚洲第一区精品日韩在线播放| 欧美国产在线看| 亚洲精品麻豆| 99手机在线视频| 91精品国产综合久久香蕉922 | 理论片一区| 国产色婷婷| 国产精品亚洲一区二区在线观看| 99久久人妻精品免费二区| 日韩精品久久无码中文字幕色欲| V一区无码内射国产| 蜜桃视频一区二区| 亚洲综合网在线观看| 亚卅精品无码久久毛片乌克兰| 亚洲精品黄| 四虎永久免费网站| 亚洲中字无码AV电影在线观看| 亚洲精品自产拍在线观看APP| 亚洲欧美日韩动漫| 久久青草免费91线频观看不卡| 欧美中文字幕在线播放| 久久精品人人做人人爽| 欧美日韩亚洲国产| 中文字幕首页系列人妻| 国产日韩AV高潮在线| 99性视频| 中文字幕首页系列人妻| 女人爽到高潮免费视频大全| 91精品国产丝袜| 色综合五月婷婷| 国内熟女少妇一线天| 国产成在线观看免费视频| 喷潮白浆直流在线播放| 国产簧片免费在线播放| 久久网综合| 国内精品一区二区在线观看|