C語言中的指標與常量 陣列及函式的關係

2021-10-24 07:18:27 字數 1227 閱讀 1152

int

*const p;

//乙個常量

指標變數不允許修改,即指向的位址不能被修改,但是位址裡的內容可以被修改。

const

int*p =

&a;//乙個指標

指標指向的變數的值不可通過該指標修改,但是指標指向的值可以改變。

const

int*

const b =

&a;

既不能更改它所指向的位址,也不能修改指向位址上的值。

int

*p[2];

//乙個陣列,每個元素都是int型別的指標。

「」的優先順序要比「*」要高,所以 p先與「」結合,構成乙個陣列,陣列名為 p,而「int*」修飾的是陣列的內容,即陣列的每個元素。

int

(*p)[2

];//乙個指標,指向含2個元素的一維陣列。

「()」的優先順序比「」高,「*」號和p構成乙個指標的定義,指標變數名為p,而 int 修飾的是陣列的內容,即陣列的每個元素。陣列指標也稱指向一維陣列的指標,亦稱行指標。

指帶指標的函式,即本質是乙個函式,函式返回型別是某一型別的指標。

int*f

(x,y)

;

首先它是乙個函式,只不過這個函式的返回值是乙個位址值。函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且在主調函式中,函式返回值必須賦給同型別的指標變數。

函式指標是指向函式的指標變數,即本質是乙個指標變數。

int

(*f)

(int x)

;/*宣告乙個函式指標 */

f=func;

/* 將func函式的首位址賦給指標f */

void

(*fptr)()

;

fptr =

&function;

fptr = function;

x =

(*fptr)()

;x =

fptr()

;

第二種格式看上去和函式呼叫無異。但是有些人傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。

C語言中的常量指標與指標常量

1.常量指標與指標常量是c語言中兩個比較容易混淆的概念 1 const char p 2 char const p a 3 char p abc 1 式定義了乙個常量指標,即指向乙個常量的指標,指向的內容是常量,不可修改,放在常量區的,但指標本身可以修改,即 p b 是非法的,p是p指向的常量的第乙...

C語言中的指標常量與常量指標

很多人糾結過這兩個名詞,也有人寫文章區分兩者的區別。其實很簡單,常量指標和指標常量乙個是指標 乙個是常量。const int p var 與 int const p var 的功能是相同的,都是乙個指向整型常量的指標。指標的數值可以修改,但是當前指標指向的量不可修改。該如何去確認p var的含義呢?...

C語言中的陣列指標與指標陣列

一 指標陣列和陣列指標的記憶體布局 指標陣列 首先它是乙個陣列,陣列的元素都是指標,陣列佔多少個位元組由陣列本身決定。它是 儲存指標的陣列 的簡稱。陣列指標 首先它是乙個指標,它指向乙個陣列。在32 位系統下永遠是佔4 個位元組,至於它指向的陣列佔多少位元組,不知道。它是 指向陣列的指標 的簡稱。下...