首先是陣列元素作為函式的實參,這和直接用多個變數作為函式的實參在用法上沒有什麼差別。
作為例子的**:
複製** **如下:
#include
using namespace std;
int main()
int max(int a,int b )
輸出結果是:2
然後,是用陣列名作為函式引數,陣列名其實代表的是陣列首個元素的指標。
複製** **如下:
#include
using namespace std;
int main()
void alter(int b)
輸出結果是:
如果我們這樣寫:
複製** **如下:
#include
using namespace std;
int main()
void alter(int b[20])
輸出結果:
為什麼我們已經定義了a[2]並且還賦值了,傳遞到函式以後,大小就只有乙個單位呢?
其實,我們定義b[ ]或者b[2]或則b[1]、b[20]、b[100],作用都相當於是 *b。編譯器直接忽略了,括號裡面的數值。
為了能夠更高的說明,陣列名作為實參實際上是傳遞的陣列的首指標,可以再看一下這個例子:
複製** **如下:
#include
using namespace std;
int main()
void alter(int *b)
這個和上面的那個輸出結果完全一樣!
******************************==分割線*************************=
接下來ciele,總結一下,陣列的引用相關問題
首先是乙個普通變數作為陣列中乙個值的引用的例子:
複製** **如下:
#include
using namespace std;
int main()
輸出結果是:5
普通變數作為陣列中乙個值的引用時,在使用上和int &a=b;並沒有什麼區別。
我們很自然的想到,普通的變數可以作為陣列元素的引用,那麼陣列元素可否作為其他元素的引用呢?
看下面的**:
複製** **如下:
#include
using namespace std;
int main()
編譯器報錯了,提示我們這樣做是不被允許的。
但是捏,乙個陣列整體可以作為另乙個陣列的引用:
複製** **如下:
#include
using namespace std;
int main()
複製** **如下:
#include
using namespace std;
int main()
因為數值中的元素是不可以其他變數的引用的額,所以需要用(&b)來說明,這是陣列整體引用,然後還必須寫清楚陣列的大小,即:
複製** **如下:
(int (&b)[2])
這個使用方法,也就引出了,陣列作為函式的形參的使用方法。
我們再看陣列作為函式的形參的時候應該是怎樣的。
複製** **如下:
#include
using namespace std;
int main()
void sm(int (&b)[2])
輸出結果是
4複製** **如下:
#include
using namespace std;
int main()
本文標題: 關於陣列做函式引數的問題集合彙總
本文位址:
陣列做函式引數的退化問題
include includevoid arraysort int a,int num void arraysort int a,int num void print array int a,int num int main int i 0 int num sizeof a sizeof a 0 n...
陣列做函式引數
陣列名是陣列元素首位址,可以直接當做實參,可以用指標或方式來當形參接收,都是位址傳遞,形參都是指標方式 include void input int arr void output int arr 這裡得出的大小是4個位元組,證明形參是指標形式 printf n d sizeof arr void ...
多維陣列做函式引數的退化
退化過程 void printarray01 int a 3 5 4k void printarray02 int a 5 5k void printarray03 int myarray 5 這就是陣列指標 6k 多維陣列做函式引數為什麼會存在退化?為什麼編譯器要設計成這個樣子 如何證明二維陣列在...