C++最牛編程技術《指針與引用》
1.變量
首先最重要的,variable的定義,當你申明一個變量的時候,計算機會將指定的一塊內存空間和變量名進行綁定;這個定義很簡單,但其實很抽象,例如:int x = 5; 這是一句最簡單的變量賦值語句了, 將5賦值於名字叫作x的內存空間,其本質是將值5賦值到一塊內存空間,而這個內存空間名叫作x。
變量在內存中的操做實際上是須要通過2個步驟的:
找出與變量名相對應的內存地址。
根據找到的地址,取出該地址對應的內存空間裏面的值進行操做。
2.指針
指針的特殊之處在於:指針變量相對應的內存空間存儲的值剛好是某個內存地址。這也是指針變量區別去其餘變量的特徵之一。例如某個指針的定義以下:
int x = 5;int *ptr = &x;
ptr便是一個指正變量名。經過指針獲取這個指針指向的內存中的值稱爲解引用。空指針是不能解引用的。
3.引用
引用(reference)在C++中也是常常被用到,尤爲是在做爲函數參數的時候,須要在函數內部修改更新函數外部的值的時候。首先咱們必須明確的一點就是:引用是一種特殊的指針。
引用是一個指向其它對象的常量指針,它保存着所指對象的存儲地址。而且使用的時候會自動解引用,而不須要像使用指針同樣顯式提領。
例如引用的定義以下:
int x = 5;int &y = x;
4.指針和引用的區別總結
指針有本身的一塊空間,而引用只是一個別名;
使用sizeof看一個指針的大小是4,而引用則是被引用對象的大小;
指針能夠被初始化爲NULL,而引用必須被初始化且必須是一個已有對象的引用;
做爲參數傳遞時,指針須要被解引用才能夠對對象進行操做,而直接對引用的修改都會改變引用所指向的對象;
指針在使用中能夠指向其它對象,可是引用只能是一個對象的引用,不能 被改變;
指針能夠有多級指針(**p),而引用至於一級;
指針和引用使用++運算符的意義不同;
若是返回動態內存分配的對象或者內存,必須使用指針,引用可能引發內存泄露。編程