指標 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 引用不是物件,只是對目前已經存在...