您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)c++引用和指針有哪些區(qū)別的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
區(qū)別:1、指針有自己的一塊空間,而引用只是一個(gè)別名;2、指針在使用中可以指向其它對(duì)象,但是引用只能是一個(gè)對(duì)象的引用,不能被改變;3、指針可以有多級(jí)指針(例**p),而引用至于一級(jí);4、指針和引用使用“++”運(yùn)算符的意義不一樣。
1、變量
首先最重要的,variable的定義,當(dāng)你申明一個(gè)變量的時(shí)候,計(jì)算機(jī)會(huì)將指定的一塊內(nèi)存空間和變量名進(jìn)行綁定;這個(gè)定義很簡(jiǎn)單,但其實(shí)很抽象,例如:int x = 5; 這是一句最簡(jiǎn)單的變量賦值語句了, 將5賦值于名字叫做x的內(nèi)存空間,其本質(zhì)是將值5賦值到一塊內(nèi)存空間,而這個(gè)內(nèi)存空間名叫做x。
變量在內(nèi)存中的操作其實(shí)是需要經(jīng)過2個(gè)步驟的:
找出與變量名相對(duì)應(yīng)的內(nèi)存地址。
根據(jù)找到的地址,取出該地址對(duì)應(yīng)的內(nèi)存空間里面的值進(jìn)行操作。
2、指針
指針的特殊之處在于:指針變量相對(duì)應(yīng)的內(nèi)存空間存儲(chǔ)的值恰好是某個(gè)內(nèi)存地址。這也是指針變量區(qū)別去其他變量的特征之一。例如某個(gè)指針的定義如下:
int x = 5; int *ptr = &x;
ptr即是一個(gè)指正變量名。通過指針獲取這個(gè)指針指向的內(nèi)存中的值稱為解引用??罩羔樖遣荒芙庖玫?。
指針內(nèi)存空間的表示如下:
3、引用
引用(reference)在C++中也是經(jīng)常被用到,尤其是在作為函數(shù)參數(shù)的時(shí)候,需要在函數(shù)內(nèi)部修改更新函數(shù)外部的值的時(shí)候。首先我們必須明確的一點(diǎn)就是:引用是一種特殊的指針。
引用是一個(gè)指向其它對(duì)象的常量指針,它保存著所指對(duì)象的存儲(chǔ)地址。并且使用的時(shí)候會(huì)自動(dòng)解引用,而不需要像使用指針一樣顯式提領(lǐng)。
例如引用的定義如下:
int x = 5; int &y = x;
4.指針和引用的區(qū)別總結(jié)
指針有自己的一塊空間,而引用只是一個(gè)別名;
使用sizeof看一個(gè)指針的大小是4,而引用則是被引用對(duì)象的大??;
指針可以被初始化為NULL,而引用必須被初始化且必須是一個(gè)已有對(duì)象的引用;
作為參數(shù)傳遞時(shí),指針需要被解引用才可以對(duì)對(duì)象進(jìn)行操作,而直接對(duì)引用的修改都會(huì)改變引用所指向的對(duì)象;
指針在使用中可以指向其它對(duì)象,但是引用只能是一個(gè)對(duì)象的引用,不能被改變;
指針可以有多級(jí)指針(**p),而引用至于一級(jí);
指針和引用使用++運(yùn)算符的意義不一樣;
如果返回動(dòng)態(tài)內(nèi)存分配的對(duì)象或者內(nèi)存,必須使用指針,引用可能引起內(nèi)存泄露。
感謝各位的閱讀!關(guān)于c++引用和指針有哪些區(qū)別就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。