C語言關於函式實參和形參的型別匹配 const篇

2021-09-09 06:21:40 字數 708 閱讀 1944

int foo(const char **p)

int main(int argc, char **ar**)

關於上斷**編譯器會提示警告:

warning: argument is incompatible with prototype

要理解上述的問題,首先要了解下const關鍵字的處理機制

對於變數的修飾上;

const char a = '1';

a = '2';

第二句編譯時就會直接報錯。

但如果修飾指標時就需要特殊注意了;

char a = '1';

const char *b = &a;

char c = '3';

b = &c;

此時的b=&c語句就是完全正確的。

const char * 的型別是「指向乙個有const限定符的char型別的指標」也就是說const限定符是修飾指標所指向的型別,而不是指標本身.

類似的 const char **也是乙個沒有限定符的指標型別,他的型別是「指向有const限定符的char型別的指標的指標」,而char **也是乙個沒有限定符的指標型別,但是他的型別是「指向沒有const限定符的char型別的指標的指標」。兩者指向的型別不相容,因此兩者之間不可以進行賦值。

參考:c專家程式設計

關於C語言形參和實參

1,對於剛接觸c語言的人對於形參和實參的理解可能不是那麼詳細,或者說很是模糊,但大體來說形參和實參的區別在於 形參只能是變數,而實參可以使變數,常量,也可以是表示式,關於變數,顧名思義,是乙個可變的量,我們通過乙個函式來理解 void add int a,int b 這裡a,b就是形參,只能是變數 ...

C語言函式 形參和實參

形參 也叫形式引數 在定義函式名和函式體的時候使用的引數,他沒有資料,可以看做乙個佔位符,只能等到函式被呼叫時接收傳遞進來的資料,所以稱為形式引數 實參 也叫實際引數 在呼叫時傳遞給函式的引數,即傳遞給被呼叫函式的值,會被被呼叫函式內部使用,所以稱為實際引數 形參和實參的區別 1 形參變數在函式未被...

C語言 形參和實參

c語言引數出現在兩個地方 函式定義處 函式呼叫處。函式定義處的引數是形式引數,只用在函式呼叫時才分配記憶體,函式呼叫完成後釋放記憶體,簡稱形參。函式呼叫處的引數是實際引數,可以是常量 變數 位址 指標 陣列 等。在函式呼叫時實參把值單向傳遞給形參,形參參與運算,實參本身不參與運算。在被調函式中,若只...