關於指標,大家都不陌生,無論學習c,c++亦或者其它程式語言,它都是不可或缺的。
但是指標的定義 指標的用法 等等各種問題。我們都必須弄清楚,不能讓他阻礙我們前進的步伐;
先說int* p; 這裡有必要說明一下 int* 表示的定義乙個指向int 型別的指標變數; 該變數記憶體裡是所指物件的位址,
用*指標運算子 即 取值符 取出指標變數p所指的記憶體空間裡的數值(內容)。
看下面一段例子
int *p=null; //定義乙個指向整形資料的指標變數p,並且使它指向空,即p的記憶體空間裡訪問null,使它不指向任何變數;如果不將它指向空,它很可能指向非法位址。
int a=10;
p=&a; //這裡其實跟第一行道理是一樣的,就是先取出a的位址,然後將該位址賦值給p,此時a的位址儲存在指標變數p的記憶體空間裡
cout<<*p<
其實還可以這樣寫 int a=10;
int * p=&a;
cout<<*p《所得結果跟上面是一樣的,這裡的int* p=&a 之所以寫*號 是說明p的出身,人家是指向int型別的指標變數;
指標的使用其實就是這樣,一般情況下將物件的位址用取位址符取出,然後符給指標變數,使指標變數訪問該物件的實體地址,然後使用*p把它指向的物件的值取出來;
當把乙個物件的位址賦值給同型別的乙個指標時,就稱該指標指向了該物件;
有很多情況下取指標指向物件值的時候不使用指標運算子*,而是用 -> 這個取值符, 像在結點中,此時的p-> 中的p是指標變數p所指向記憶體的首位址,和陣列的首位址是乙個概念;此時p加上乙個->運算子後 p代表的是p所指向的結點;但是注意了,單獨乙個p仍然是指標變數,什麼都不能代表;指標變數p只有加上不同的運算子後,才能表示不同的含義;
關於指標先說這麼多了,這麼基礎的東西想想還是寫出來,沒事大家可以看看。
野指標的那些事
所謂野指標是指隨機指向一塊記憶體空間的指標,野指標導致的錯誤被稱為記憶體洩漏,但這種錯誤不是每次都會發生,因為野指標是隨機指向一塊記憶體空間,當野指標恰好指向的一塊記憶體空間是已經跟作業系統申請過位址的記憶體空間的話,就不會造成記憶體洩漏。造成野指標的原因是未對指標進行初始化,即指標沒有指向,野指標...
引用和指標的那些事
2.3.1 引用 引用並非物件,相反的,它只是為乙個已存在物件所起的另外乙個名字。示例 int ival 1024 int refval ival tips 1.除2種情況外,引用的型別要和與之繫結的物件嚴格匹配 2.引用必須被初始化,且一旦初始化後,它和初始值物件一直繫結在一起,不能更改繫結的物件...
指標和引用那些事
指標和引用的概念 引用 乙個已定義變數別名 指標和引用區別 1 指標是乙個位址,指向記憶體中一塊儲存單元,它的值可以發生變化,可以指向其他儲存單元 引用是乙個變數別名,和原來變數是同乙個東西,即在記憶體中占有同一儲存單元,被編譯器實現為const指標,並且不可被多次初始化 重定義 話不多說,看下面例...