国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++中的指針用法匯集

開發 后端 開發工具
大家都認為,C++語言之所以強大,以及其自由性,很大部分體現在其靈活的指針運用上。因此,說指針是C++語言的靈魂,一點都不為過。那么,就讓我們一來看C++中指針的用法吧!

C++中,指針用得比較多,對于里面眾多的指針用法,不免弄得有些糊涂,自從我從圖書館里借到一本譚浩強教授主編的《C++面向對象程序設計》后,才幫我理清了思路?,F把部分內容展現給大家,希望對大家有所幫助。

C++程序設計重要基礎就是類和對象,對象指針是很重要的一部分,包括指向對象的指針、指向對象成員的指針、this指針、指向對象的常指針、指向常對象的指針等。

1、指向對象的指針

定義:對象空間的起始地址就是對象的指針。

說明:在建立對象時,編譯系統就為每個對象分配一定的存儲空間以存放其成員,不過注意,在一般情況下不同對象的數據存儲單元中存放的數據成員是不相同,而不同對象的函數代碼卻是相同的,也就是說,它們的函數代碼是共享的。這時我們可以定義一個指針變量用來存放對象的指針。

定義指向類對象的指針變量的一般形式是:

類名 *對象指針名;

如對于與個Time類對象,我們可以有:

 

  1. Time t;  
  2. Time *p;  
  3. p=&t; 

 

我們就可以通過對象指針訪問對象和對象的成員,假如所定義的類中有數據成員hour、minute、sec,成員函數有gettime(),則

(*p).hour 即為p指向對象中的hour成員,相當于t.hour

(*p).gettime() 即為p指向對象中的成員函數gettime(),相當于t.gettime()

也可以用如下形式:

p->hour 和 p->gettime()和上面是等價的。

2、指向對象成員的指針

(1)指向對象數據成員的指針

在C中我們學過指向普通變量的指針變量,在C++中定義指向對象數據成員的指針變量的方法和定義指向普通變量的指針變量方法相同,其一般形式為:

數據類型名 *指針變量名;

如:

 

  1. int *p;  
  2. p=&t.hour; //將對象t的數據成員hour的地址賦給p,p指向t.hour 

 

(2)指向對象成員函數的指針

定義指向對象成員函數的指針變量和定義指向普通函數的指針變量不同。

在定義指向普通函數的指針變量時我們可以這樣定義:

 

  1. void (*p)();  
  2. p=fun;  
  3. (*p)(); //調用fun函數 

 

然而編譯系統要求在將函數地址賦給指針變量時必須滿足三個條件:

函數參數類型及個數要匹配

函數返回值的類型要匹配

所屬的類要匹配

顯然在上面的p與類是無關的。為了滿足第三條,我們可以為指針指定類,故定義指向對象成員函數的指針變量一般形式為:

數據類型(類名::*指針變量名)(參數表列);

可以讓指針指向公用的成員函數,如:

 

  1. void (Time::*p)(); //定義指向Time類對象成員函數的指針變量p  
  2. p=&Time::gettime; //把Time類的公用成員函數gettime()地址賦給指針變量p  
  3. (t.*p)(); //調用Time類對象t的成員函數gettime() 

 

注意:因為成員函數不存放在對象空間中,多個同類對象共享此成員函數代碼,所以在將成員函數的入口地址賦給指針變量是應寫成:

指向對象成員函數的指針變量=&類名::成員函數名;

在成員函數名后面沒有"()",如果寫成p=&Time::gettime()是錯誤的。[nextp

3、this指針

在每個成員函數中都包含了一個特殊的指針,稱為this,它是指向本類對象的指針,它的值是當前被調用成員函數所在對象的起始地址。之所以有這個指針,是因為為了保證同類的不同對象的成員函數引用的是指定對象中的數據成員,它是系統自動實現的。

如定義一個求體積的函數

 

  1. int box::vol()  
  2. {return(height*width*length);} 

 

假如已經定義了對象t,當調用成員函數t.vol()時,編譯系統就把對象t的起始地址賦給this指針,于是在成員函數引用數據成員時,根據指針this就可以引用到對象t的數據成員。所以C++把上面的函數處理成

 

  1. int box::vol()  
  2. {return(this->height*this->width*this->length);} 

 

由于this的值是當前被調用成員函數所在對象的起始地址,所以可以寫成

 

  1. int box::vol()  
  2. {return((*this).height*(*this).width*(*this).length);} 

 

所以在調用成員函數t.vlo()時,實際的調用方式為t.vol(&t),不過對象t的地址傳給this指針是由系統自動完成的,不需人為加上。

4、指向對象的常指針

將指向對象的指針變量聲明為const型且進行處始化,這樣指針值始終保持為其初值,不能改變其指向。

如:

 

  1. Time t1(8,8,8),t2;  
  2. Time *const p=&t1; //常指針p指向對象t1  
  3. p=&t2; //試圖改變p的指向,非法 

 

由上面我們可以看出定義指向對象的常指針的一般形式為:

類名 *const 指針變量名=對象的起始地址;

注意:指向對象的常指針變量的值不能改變,但可以改變它所指向對象中的數據成員的值。

常指針一般用作函數的參數,這樣就不允許在函數執行過程中改變指針變量的值,使其始終保持指向原來的對象。

5、指向常對象的指針變量

首先回顧一下指向常變量的指針變量,其一般形式為:

const 類型名 *指針變量名;

如:

 

  1. const char *p; 

 

如果一個變量已經被聲明為常變量,那么只能用指向常變量的指針變量去指向它,而不能用一般的指針變量。另外,指向常變量的指針變量除了可以指向常變量外,還可以指向未被聲明為const的變量,但也不能通過該指針改變其值。例如:

 

  1. char c='a' //定義字符變量c,未聲名為const  
  2. const char *p; //定義指向常變量的指針變量p  
  3. p=&c; //p指向字符變量c  
  4. *p='b'//非法  
  5. c='b'//合法 

 

說明:上例中,指針變量p指向字符變量c,并不說把c也聲明成常變量,而只是說在通過指針變量引用c時,c具有常變量的特征,其值是不能改變的,但c仍然是一個普通變量。

在指向常變量的指針中,關于函數形參的指針類型有幾點值得注意:

如果函數形參是非const型指針變量,實參只能用指向非const型指針;如果函數形參是指向const型變量的指針,實參則可以是const型的或非const型的指針變量。換句話說就是指向常變量的指針可以指向const和非const型的變量,而指向非const型變量的指針只能指向非const的變量。

用指針變量作形參時形參和實參的對應關系表

下面說到正題,指向常對象的指針變量和指向常變量指針變量類似。

如果一個對象已經被聲明為長對象,只能用指向常對象的指針變量指向它,而不能用一般的指針變量指向它。

如果定義了一個指向常對象的指針變量且使它指向一個非const的對象,其指向的對象不能通過指針來改變。

如果定義了一個指向常對象的指針變量,是不能通過它改變所指向的對象的值的,但是指針變量本身的值是可以改變的。

如:

 

  1. Time t1(8,8,8),t2; //定義對象  
  2. const time *p=&t1; //定義指向常對象的指針p,并使它指向t1  
  3. p=&t2; //合法,指針p指向對象t2 

 

所以當我們希望在調用函數時對象的值不被修改,我們就可以把形參定義為const型的指針變量,同時用對象的地址作實參(對象可以是const或非const型);當要求對象不僅在調用函數中不被改變,而且在程序執行過程中也不發生改變,我們就把它定義為const型。所以指向常對象的指針最常用于函數的參數,以保護形參指針所指向的對象在函數執行過程中不被修改。

以上是我學習C++指針時的記錄,也是對C++指針用法的總結,我想對大家學習C++應該是很有幫助的。

【編輯推薦】

  1. C++中的this指針
  2. 詳解C++中的Boost智能指針
  3. 9.4.1 指針、數組和地址間的關系
  4. C/C++中的指針的應用及注意問題
責任編輯:于鐵 來源: 中國IT實驗室
相關推薦

2011-04-19 16:38:00

對象指針指針C++

2011-04-11 11:09:50

this指針

2011-07-20 10:06:54

CC++const

2011-04-07 16:34:05

staticC++

2024-05-27 00:40:00

C++bitset

2024-12-26 10:45:08

2024-01-09 09:23:12

指針C++

2011-04-11 14:18:37

CC++指針

2021-12-21 15:31:10

C++語言指針

2015-05-13 10:37:58

C++指針與引用

2010-12-17 10:07:59

2024-01-25 11:42:00

C++編程指針常量

2023-12-26 12:13:31

野指針C++編程

2014-01-24 09:49:01

C++指針

2024-05-15 16:01:04

C++編程開發

2011-07-20 17:54:02

C++

2010-01-26 13:42:28

C++指針

2011-07-15 01:38:56

C++this指針

2024-04-01 09:13:20

C++函數遞增

2021-10-27 16:27:20

C++指針操控
點贊
收藏

51CTO技術棧公眾號

欧美色综合一区二区三区| 久久99精品久久久野外观看| 欧美国产一区在线| 麻豆精品视频在线观看免费| 国产香蕉在线| 99视频一区二区三区| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 最新国产精品亚洲| 九七电影韩国女主播在线观看| 国产精品短视频| 日韩中文字幕三区| 国产曰批免费观看久久久| 欧美日韩国产精品一卡| aa国产精品| 久久riav| 老司机久久99久久精品播放免费| 国产伦精品一区二区三区高清| 欧美a级片网站| 国产欧美日韩一区二区三区| 午夜精品久久| 国产一区精品在线| 久久国产精品久久w女人spa| 国产伦精品一区二区三区照片| 91成人精品视频| 国产在线精品播放| 一区二区日韩欧美| 粉嫩精品一区二区三区在线观看| 禁久久精品乱码| 日韩久久不卡| 国产高清成人在线| 18禁免费无码无遮挡不卡网站| av激情综合网| 先锋影音资源999| 午夜精品福利一区二区蜜股av| 在线天堂视频| 欧美一二三区在线| 91精品论坛| 97久久精品人搡人人玩| 日韩欧美国产精品综合嫩v| 高清国产一区| 全国精品久久少妇| 黄色一级在线视频| 中文字幕亚洲一区二区va在线| 中文字幕校园春色| 88在线观看91蜜桃国自产| 日本三级一区| 操91在线视频| 区一区二视频| 日本一区二区三区视频免费看| 精品一区二区三区日韩| 国产精品亚洲二区在线观看 | 亚洲一区不卡在线| 91最新地址在线播放| 在线观看免费黄网站| 粉嫩老牛aⅴ一区二区三区| 黄色小网站在线观看| 中文字幕精品国产| 日韩电影免费在线观看| 日韩国产在线一区| 国产丝袜欧美中文另类| 日本中文字幕一区二区有码在线| 精品电影一区二区三区| 国产伦理久久久久久妇女| 国产女主播一区二区| 成人听书哪个软件好| 亚洲sss视频| 日韩中文有码在线视频| 中文在线日韩| 欧美a v在线播放| 欧美在线不卡一区| 精品亚洲a∨| 国产精选一区二区| 国产精品av免费观看| 成人午夜激情片| www.com毛片| 亚洲v精品v日韩v欧美v专区| 2024最新电影免费在线观看| 影音先锋欧美精品| 国产欧美日韩免费观看| 欧美精品人人做人人爱视频| 久久久久久**毛片大全| 日本一级在线观看| 精品国偷自产在线视频99| 先锋资源久久| 国产又粗又猛又爽又黄的网站| 午夜欧美一区二区三区在线播放| 九色porny自拍视频在线播放| 2020欧美日韩在线视频| 快she精品国产999| 91成人福利在线观看| 亚洲美腿欧美激情另类| 久久人体视频| 日本精品一区在线观看| 欧美久久久久久久久中文字幕| 一区二区三区视频播放| 久99久视频| 国产精品不卡在线| 欧美成人黑人| 成人激情av在线| 欧美国产日韩亚洲一区| 丁香花在线观看完整版电影| 91在线免费网站| 日本一区二区动态图| 成人性教育av免费网址| av成人观看| 亚洲六月丁香色婷婷综合久久 | 久久久国产精品x99av | 久久精品夜夜夜夜久久| 二区三区在线观看| 国产一区二区丝袜| 国产精品拍天天在线| 深夜成人福利| 亚洲色图自拍| 6080亚洲精品一区二区| 欧美日韩日本国产亚洲在线| 黄网在线播放| 91国产中文字幕| 久久老女人爱爱| 91九色综合| 亚洲韩国在线| 精品国产一区二区三区久久影院| 激情久久久久久| 精品电影在线| 国产精品视频一区二区三区经| 狠狠躁18三区二区一区| 精品99久久| 伊人发布在线| 国产精品无码专区在线观看| 中文字幕五月欧美| 日韩精品a在线观看91| 国产区二区三区| 欧美亚洲在线观看| 亚洲一区二区三区视频在线播放| 色愁久久久久久| 阳光姐妹淘韩国版| 国产精品青青在线观看爽香蕉 | 天天综合色天天综合色hd| 色狠狠综合天天综合综合| 水蜜桃久久夜色精品一区| 国产精品粉嫩av| 国产经典一区二区| 天天色天天操综合| 欧美日韩1区2区3区| 尤物视频在线免费观看| 国产综合动作在线观看| 欧美色涩在线第一页| 性欧美videos另类喷潮| 一二三四区在线观看| 一区二区三区视频在线播放| 亚洲欧美中文日韩在线v日本| 国产精品99久久久久| 超碰国产精品一区二页| 国产91色在线观看| 日韩av日韩在线观看| 亚洲一区在线播放| 在线看片一区| 国产精品vvv| 成人免费无码av| 国产精品吊钟奶在线| 色综合天天在线| 日韩福利视频网| 亚洲一区二区av| 最近最好的中文字幕2019免费 | 看全色黄大色大片| 日韩一区二区三区在线播放| 国产精品二三区| 欧美天天视频| 久久91导航| 国产偷激情在线| 久久久7777| 久久偷看各类女兵18女厕嘘嘘| 国产精品久久夜| 一本一本久久| 韩国三级大全久久网站| 欧洲毛片在线| 国产日韩亚洲欧美在线| 日韩av不卡电影| 日韩视频永久免费| 国产视频一区不卡| 在线精品亚洲| 日韩亚洲精品在线观看| 国产区视频在线| 欧美一级在线看| 91在线短视频| 国产精品久久久久久妇女6080| 区一区二区三区中文字幕| 亚洲成人a**站| 国产午夜精品一区二区| 欧美日中文字幕| 超碰在线资源| 男人插曲女人视频免费| 国产欧美日韩综合精品二区| 亚洲欧洲日韩国产| 亚洲你懂的在线视频| 久久九九99| 激情亚洲另类图片区小说区| 国产精品一区二区婷婷| 无码av天堂一区二区三区| 国产伦精品免费视频| 国产午夜精品麻豆|