c 指標 與 引用

2022-04-06 01:31:54 字數 2182 閱讀 3135

指標 int *x;盡量理解為int 型別

1、指標宣告之後,必須初始化,否則會隨機指標

2、如果指標不知道指向誰,那麼應該把這個指標變為空指標,

應用情況:在堆記憶體使用完之後要手動刪除

空指標命名方法: int *p ==nullotr;

棧記憶體的東西不用delete,只針對new關鍵字hi用,棧會自動**,不用delete操心

&:引用    (改東西的時候考慮使用)

常量:常量是不允許指標去修改資料的,可以修改指標的指向

const 是欺騙指標的,讓指標以為這份資料是乙份常量資料

所以 禁止  指標來修改這個資料的值

常量指標命名方法: int * const xx=$

指向 常量資料  const int * const xx=$

常量指標 能通過指標修改資料,但不能修改指標指向。

常量指標指向常量:

const int * const xx=&age;

不能修改指向位置的資料

不能修改指標的指向

指標和 const 誰在前先讀誰 ;

*象徵著位址,const象徵著內容;

誰在前面誰就不允許改變。

函式傳遞指標 :

c++ 裡面函式的引數,大部分情況都是 使用指標來傳遞

c++ 函式傳值方式有三種  值傳遞 引用傳遞 和指標傳遞 。實際上 這三種的背後都是拷貝的工作,

函式返回指標:

1不要返回區域性變數的位址,因為後面可能拿不到值

2當然也要有概率會取到值,那是因為棧記憶體還沒來得及**資料,sleep 休眠一下就能體現出來

3 就算能拿到值,也不提倡這種寫法

擔心取不到值,因為函式執行結束,這個變數的資料會被乾掉。

最後要手動**記憶體,先delete x;x=nummptr;

函式指標:

降低**的耦合度,提高自由度,再sdk開發裡面就比較有用。

函式指標:把乙個函式a傳遞給b,然後再函式b裡面執行函式a

函式指標有沒有存在的必要性?能不能不用函式指標,如果一定要用那麼在什麼場合用?

1 可以不用函式指標,但是這樣的**耦合度很高,黏在一起了、

2 當我們有乙個函式內部想要呼叫另乙個函式,此時就用到了函式指標 

引用:1引用實際上就是原有資料的別名稱呼

2 引用宣告的時候,必須立即初始化,否則報錯

3 引用並不會開闢新的空間,對引用和原資料取位址得到是一樣的。

4 不能建立陣列的引用,因為陣列是一堆資料,引用只是表示乙個 個體的別名

左值和 右值 :

1 c++ 裡面的賦值表示式,有左值和右值之分

2  為什麼區分左值和右值,因為函式的引數主要有左值,主要有右值】

c++ 裡面可以針對右值進行移動的操作(類的移動建構函式)

3 左值可以出現在等號的左邊也可以出現在右邊,右值只能出現再等號的右邊。

4為了區分左值和右值 就看他能否取到位址,能取位址就是左值,不能取位址就是右值

5 左值一般是一些變數、物件,因為他會開闢空間,右值其實就是說這個空間裡面的資料  實實在在的資料,

比如: 數值,計算表示式,函式的返回值。

左值引用

1.左值引用其實就是以前講過的引用,使用乙個&來表示

2.左值引用只能接收左值,預設不能接收右值

3.但是如果左值引用加上const修飾,那麼左值引用就可以接收右值了

右值引用

1.右值引用使用&&表示,左值引用使用&表示

2.左值引用能接收左值,如果要接收左值,必須加上const關鍵字修飾

3右值引用 就只能收右值,禁止接收左值。

tips : 在呼叫別人函式的時候,就要小心一些,因為函式的引數經常會出現左引用和右引用。

函式的引數 真的有必要寫成引用嗎?

1.如果不想修改外部的資料,不寫也可以。

2.引用還有乙個好處就是不會開闢新的空間 來存放乙份拷貝的資料

3.所以c++的原始碼,大部分都是引用或者指標,沒有寫成普通的變數寫法。

int add01(int a,int b)

int add01(int &a,int &b)

int add01 (int * a,int *b)

還有一點就是關於右值引用的是在c++版本11開始到以後才有的 (value_type &&__x)

在11 版本之前都是(const value_type &__x)   : 左值引用

C 指標與引用

include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...

C 指標與引用

從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...

C 引用與指標

1 引用即給當前物件起了個別名,通過將宣告符寫成 t c的形式來定義引用,其中t是變數名,c是當前物件的名字 修改別名相當於修改當前物件,引用必須初始化,且不能更改指向物件 example int a 10 定義a及初始化 int c a 定義a的引用c cout2 引用不是物件,只是對目前已經存在...