C 指標總結

2021-06-17 01:17:10 字數 2271 閱讀 8599

指標定義和基本操作:指標是記憶體的乙個位址。定義格式,型別名 *指標變數名 ,其中指標變數名指的是記憶體位址,加*是表示指向這一記憶體位址所儲存的內容,如果要取位址的話就要用&來處理,比如& 指標變數名 或 &* 指標變數名,如果指標暫時不用的時候,可以賦給乙個空指標 null。

統配指標型別void:void *指標變數名 

指標與常量限定符const:                            指向常量的指標:const int *p = &x 或 p = &x; 常指標:指標本身是個常量,它固定指向某乙個變數 int *const p = &x,此時 *p = 20是正確的賦值,而p = &y則是不正確的賦值。

指向常量的常指標:指標本身不能改變,指向的位址中的值也不能改變。指向常量的常指標定義如下:const int *const p = &x;const 加在哪一部分前就是限定哪一部份不能變。

指標運算與陣列:

指標指向陣列: p = & array[i]                          

初始化指標: p = &array[0] 或 p = array

用指標訪問陣列: *p  *(p + i) p[i] 都可以訪問陣列的元素

指標與動態記憶體分配:實現動態記憶體滿足三個條件:定義指標變數 int *p,動態申請空間 new int ,動態**空間 delete p

動態變數的建立:new 型別名  如 int *p   p = new int   

new 操作建立乙個以為陣列:int *p ; p = int[10];

動態變數的**:**動態變數:delete 指標變數; **動態陣列: delete 指標變數。

記憶體洩漏:申請動態變數用完後,沒有進行delete操作,這樣可能會耗盡記憶體,直至崩潰!

查詢new操作的失誤:new操作之前可能計算機記憶體已經消耗完了,所以有必要在申請前檢查一下,如果p == null,就直接 delete p;也可以用assert()巨集來檢查,檢查的命令是 assert(p != 0) 

將字元陣列賦給乙個指標,字元陣列陣列中儲存的是乙個字串,字串儲存在棧工作區。

申請乙個動態的字元陣列賦給乙個指向字元是指標,字串儲存在字元陣列中,字串儲存在堆工作區。

把函式的形參定義為指標,在函式呼叫時,將實參的位址傳過去,從而實現交換兩個形參指向的空間的內容。

陣列名作為形參和實參時,形參與實參實際上共享同一塊儲存空間。陣列傳遞的本質是位址傳遞。

字串作為函式的引數時,字串本質上是用乙個字元陣列來儲存,形參和實參都可以寫成字元陣列或指向字元的指標。傳遞字串只需乙個引數,即指向字串中的第乙個指標,字串有特定的結束標誌'\0'

返回指標的函式:返回值應該是全域性變數或動態變數,返回動態變數時需要要用delete運算來釋放記憶體。

引用與引用的傳遞:1.引用的定義:引用就是給變數取了乙個別名,引用定義時變數前必須加&,定義時必須立即初始化,不能在定義完成後初始化,一旦為乙個變數定義了別名,就不能使其作為另外乙個變數的別名。2.引用型別作為函式的引數:函式呼叫時,對於的函式引數必須是左值表示式(通常為變數)。3.返回引用的函式:函式返回值為引用型別時表示函式返回值是函式內某乙個變數的引用,返回時不需要建立臨時變數來存放,可以直接返回return後的變數本身,如果不希望返回值被修改,就把返回值宣告為const,在定義返回值引用值的函式時,不能返回該函式的區域性變數,返回值也不能是乙個表示式,函式返回引用值一般是全域性變數或動態變數.

指標陣列與多級指標:一維陣列定義形式:char *string[10];         

main函式的引數:第乙個形參argc,是乙個整型的引數,它的值是執行程式時命令列的引數個數;第二個形參argv,是乙個指向字元的指標陣列,它的每乙個元素是指向乙個實際引數的指標,每個實際引數都代表乙個字串。

多級指標:多級指標被成為指標的指標。二級指標的定義格式:型別名  **變數名,**指標的定義格式:型別名  ***變數名,如二級指標定義舉例:int x,*p=&x,**q=&p。

多維陣列和指向陣列的指標:1.指向一維陣列指標的定義: 型別名(*指標變數名)[元素個數];   

2.c++不支援二維陣列的動態建立,最簡單的方法是將二維陣列轉化為一維陣列的方式來定義。

返回型別(*指標變數)(形式參數列),例如定義乙個指向乙個沒有引數,返回值為int型的函式int (*p)(),定義乙個指向乙個沒有指向有乙個整型引數,返回值為double型的函式,double (*p)(int)int;讓指向函式的指標指向某乙個特定的函式,可以通過賦值:指標變數名 = 函式名

指向函式的指標作為函式的引數:應用如用快速排序法通過strcmp()函式來比較字串

指向函式的指標用於選單的選擇:

C 指標 總結

對指標的一些總結 計算機記憶體中的每個位置都由乙個位址標識。通常,鄰近的記憶體位置合成一組,這樣就允許儲存更大範圍的值。指標就是他的值表示記憶體位址的變數。無論是程式設計師還是計算機都無法通過值的位模式來判斷它的型別。型別是通過值的使用方法隱式地確定的。編譯器能夠保證值的宣告和值的使用之間的關係是適...

C 指標總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!指標是一變數或函式的記憶體位址,是乙個無符號整數,它是以系統定址範圍為取值範圍,32位,4位元組。存放位址的變數。在c 中,指標變數只有有了明確的指向才有意義。int ptr 指向int型別的指標變數 char ptr float ptr char...

c 指標總結

int p 乙個普通的整型型別 int p 先看p和 結合,說明p是乙個指標,然後再與int結合,說明指標指向的內容是整型型別。所以p是乙個指向整型型別的指標。int p 3 先看p與結合,說明p是乙個陣列,然後再與int結合,說明陣列中元素的型別是整型。所以p是乙個由整型型別元素組成的陣列。int...