指標(pointer)就是記憶體的位址,c語言允許用乙個變數來存放指標,這種變數成為指標變數。指標變數可以存放基本型別資料的位址,也可以存放陣列、函式、以及其他指標變數的位址。
程式在執行過程中需要的是資料和指令的位址,變數名、函式名、字串名和陣列名在本質上是一樣的,他們丟失位址的助記符:在編寫**的過程中,我們認為變數名表示的是資料本身,而函式名、字串名和陣列名表示的是**塊或資料塊的首位址;程式被編譯和鏈結後,這些名字都會消失,取而代之的是他們對應的位址。
常見指標變數的定義 定義
含義int *p
p可以指向int型別的資料,也可以指向類似int arr[m]
int **p
p為二級指標,指向int*型別的資料
int *p[n]
p為指標陣列,的優先順序高於*,所以應該理解為int *(p[n]);
int (*p)[n]
p為二維陣列指標
int *p()
p是乙個函式,它的返回值型別為int*
int(*p)()
p是乙個函式指標,指向原型為int func()的函式
1) 指標變數可以進行加減運算,例如p++、p+i、p-=i。指標變數的加減運算並不是簡單的加上或減去乙個整數,而是跟指標指向的資料型別有關。
2) 給指標變數賦值時,要將乙份資料的位址賦給它,不能直接賦給乙個整數,例如int *p = 1000;是沒有意義的,使用過程中一般會導致程式崩潰。
3) 使用指標變數之前一定要初始化,否則就不能確定指標指向**,如果它指向的記憶體沒有使用許可權,程式就崩潰了。對於暫時沒有指向的指標,建議賦值null。
4) 兩個指標變數可以相減。如果兩個指標變數指向同乙個陣列中的某個元素,那麼相減的結果就是兩個指標之間的元素個數。
5) 陣列也是有型別的,陣列名的本意是表示一組型別相同的資料。在定義陣列時,或者和 sizeof、& 運算子一起使用時陣列名才表示整個陣列,表示式中的陣列名會被轉換為乙個指向陣列首位址的指標。
extern 在C語言中的應用
c語言中extern關鍵字詳解 內容清單 1.用extern宣告外部變數 1 在乙個檔案內宣告的外部變數 2 在多個檔案中宣告外部變數 3 在多個檔案中宣告外部結構體變數 2.用extern宣告外部函式 3.總結 1 用extern宣告外部變數 定義 外部變數是指在函式或者檔案外部定義的全域性變數。...
Static在C語言中的應用
概念 what static 作用域生命週期 函式 一直存在 定義原始檔 一直存在 內部變數 呼叫完銷毀 函式內 一直存在 外部變數 一直存在 定義原始檔內 一直存在 目的 why l對於函式來講,只有乙個目的,就是限定作用域,禁止當前檔案外的檔案呼叫 l 對於內部變數,僅僅是為了該值能夠永久留存,...
在c語言中 C語言中的指標和字串
之前我們說過關於字元的一些內容,字元的原理,歸根到底就是將我們常用的一些字元根據編號整理成一張統一的表,每個字元對應著這個表裡面的乙個數值,這一過程就是字元的編碼。然而大多數時候我們根本就不會使用單個字元,比如計算機上面要輸出一句句子 hello world 這個句子裡面就是由多個字元所組成的,分別...