如何理解陣列作為函式引數時,陣列名就是指標?

2021-05-24 00:43:26 字數 553 閱讀 4850

在《expert c programming》這本書中,第202頁有這樣一句話:在函式引數的宣告中,陣列名被編譯器當著指向該陣列第乙個元素的指標。通過例項測試,這句話的意思就是:在宣告這個引數的整個函式作用域內,陣列名就是指標。

見測試用例:

**注釋從**執行結果得到,從**注釋來分析:

1.在main()中,arr等價於&arr; 而在fun()和fun2中,ca不等價與&ca。原因就是上面說的:在宣告ca這個引數的函式fun的整個作用域內,陣列名就是指標,ca是指標,&ca就是指標的位址;而在main中,arr是陣列名,arr和&arr都是陣列第一元素的位址。

2.任何時候,當陣列是字串陣列時,使用printf和cout列印字串,只要列印的內容是陣列某個元素的位址,即可列印出以這個元素開始的整個字串。

例如:fun函式中:printf("%s/n",&(ca[0]));cout<<"&(ca[1]) = "<<&(ca[1]);

而當陣列不是字串陣列時,當列印的內容是陣列某個元素的位址時,列印的就是實際的位址。

補充:sizeof(陣列名),得到的是整個陣列的長度。

陣列作為函式引數

一 一維陣列名作函式引數 用陣列名作函式引數,應該在主調函式和被調函式分別定義陣列,例如 void main 在被呼叫函式中宣告了形引數組的大小為10,但在實際中,指定其大小是不起任何作用的,因為c語言編譯對形引數組大小不做檢查,只將實參陣列的首元素位址傳給形引數組。形引數組可以不指定大小,在定義陣...

陣列作為函式引數

陣列元素的作用與變數相當,一般來說,凡是變數可以出現的地方,都可以用陣列元素代替。陣列名也可以做實參和形參,傳遞的是陣列第乙個元素的位址。陣列元素可以用作函式實參,但是不能用作形參,因為形參是在函式被呼叫時臨時分配儲存單元的,不可能為乙個陣列元素單獨分配儲存單元 陣列是乙個整體,在記憶體中佔連續的一...

陣列作為函式引數

做題遇到乙個陣列傳參,發現了一些小問題。1.對於陣列長度來說,用sizeof 陣列名 求出來的並不是陣列的大小,確切的說,不是我要的大小,他是求出了陣列所佔空間的大小。int a 5 int n sizeof a 這樣算出來的n不是想象中的陣列長度5,我得出的結果是20,因為乙個元素佔4個位元組,5...