C語言 關於函式名和陣列名的理解

2021-10-20 22:41:21 字數 626 閱讀 6381

說到函式名和陣列名,很多人對其代表的意思理解的還不是很清楚,甚至是錯誤的,本文試圖將其所代表的意思描述清楚。

陣列的定義通常是如下這種型別:

int a[10]

;

首先說明,陣列名和指標雖然長得像,但是一點關係的沒有(比如無法a++),很多用法都不同,可以當做兩個東西。

考慮到陣列名作為右值的情況:

某函式的實現如下:

void

func

(void

)

func就是我們要**的函式名了,下面是知乎一位網友的回答,我覺得非常好了,摘錄一下:

func得到函式位址,是因為它是函式指示符。只有在作為sizeof或者單目&操作符的運算元時,它的型別才是函式;其它情況都會被轉化為指向該函式的指標。

&func得到函式位址,是因為單目&操作符本來就是用來取運算元的位址的。而根據上一條,此處運算元的型別就是func函式,所以這個表示式可以得到func函式的位址。

*func得到函式位址,是因為本來就有相關的規定,表示式函式的值是對應的函式指示符

– 第乙個回答)

c語言中陣列名和陣列名取位址理解

1 陣列名是個指標型常量,也就是值不能被改變。指標常量和常量指標區別見本文 char str hello char ch 6 hello ch str 錯誤,常量不能被賦值,正如 1 2,字面值常量1被賦值為2一樣錯誤。char ch 2 定義後,陣列名相當於char const ch 0x.ch就...

c語言 陣列名和 陣列名的區別

在學習c語言的過程中我們可以發現乙個一維陣列的的陣列名往往具有兩層含義 一.作為陣列名代表整個陣列 二.作為指標代表陣列的首元素位址 因此很容易把陣列和指標混為一談 我們可以發現陣列名等價於乙個指向陣列首位址的指標。當陣列名代表整個陣列的時候是在以下兩種情況 1.在用sizeof關鍵字求陣列所佔的記...

函式名與陣列名的誤解

一 函式名的誤解 很多人把函式名理解為是函式的位址名,其實函式名是乙個函式實體的代表,並非是乙個位址的代表。函式名可以作為函式的位址,但是,絕大多數人都忽略了乙個條件,從函式到指標的隱式轉換是函式名在表示式中的行為,就是說,這個轉換僅在表示式中才會發生,這僅是函式名眾多性質中的乙個,而非本質,函式名...