国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

關(guān)于數(shù)組做函數(shù)參數(shù)的問題集合匯總

2020-01-26 15:43:17
字體:
供稿:網(wǎng)友

首先是數(shù)組元素作為函數(shù)的實參,這和直接用多個變量作為函數(shù)的實參在用法上沒有什么差別。

作為例子的代碼:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 int max(int a,int b);
        int a[2],m;
        a[0]=1;
        a[1]=2;
 m=max(a[0],a[1]);
 cout<<m; 
 return 0; 
}
int max(int a,int b ){
 if(a<b)a=b;
 return a;
}

輸出結(jié)果是:2

然后,是用數(shù)組名作為函數(shù)參數(shù),數(shù)組名其實代表的是數(shù)組首個元素的指針。

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
        void alter(int b[]);//b[]括號里面的數(shù)值可寫可不寫,其作用是使編譯系統(tǒng)把它當(dāng)作一維數(shù)組來處理
        int a[2];
        a[0]=1;
        a[1]=2;
 alter(a);
 cout<<a[0]<<"/n";
 cout<<a[1]<<"/n"; 
 return 0; 
}
void alter(int b[]){
 b[0]=3;
 b[1]=4;
}

輸出結(jié)果是:

3

4

如果我們這樣寫:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
        void alter(int b[20]);//b[]括號里面的數(shù)值可寫可不寫,其作用是使編譯系統(tǒng)把它當(dāng)作一維數(shù)組來處理
        int a[2];
        a[0]=1;
        a[1]=2;
     alter(a);
        cout<<sizeof(a); 
 return 0; 
}
void alter(int b[20]){
 cout<<sizeof(b)<<endl;
}

輸出結(jié)果:

4

8

為什么我們已經(jīng)定義了a[2]并且還賦值了,傳遞到函數(shù)以后,大小就只有一個單位呢?

其實,我們定義b[ ]或者b[2]或則b[1]、b[20]、b[100],作用都相當(dāng)于是 *b。編譯器直接忽略了,括號里面的數(shù)值。

為了能夠更高的說明,數(shù)組名作為實參實際上是傳遞的數(shù)組的首指針,可以再看一下這個例子:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
    void alter(int *b);
    int a[2];
    a[0]=1;
    a[1]=2;
 alter(a);
 cout<<a[0]<<"/n";
 cout<<a[1]<<"/n"; 
 return 0; 
}
void alter(int *b){
 *b=3;
 *(b+1)=4;
}

這個和上面的那個輸出結(jié)果完全一樣!

================================分割線==========================

接下來,總結(jié)一下,數(shù)組的引用相關(guān)問題

首先是一個普通變量作為數(shù)組中一個值的引用的例子:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
    int a[2];
    a[0]=1;
    a[1]=2;
    int &t=a[0];
    t=5;
 cout<<a[0]<<"/n"; 
 return 0; 
}

輸出結(jié)果是:5

普通變量作為數(shù)組中一個值的引用時,在使用上和int &a=b;并沒有什么區(qū)別。

我們很自然的想到,普通的變量可以作為數(shù)組元素的引用,那么數(shù)組元素可否作為其他元素的引用呢?

看下面的代碼:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
   int a[2];
   int b=100;
   &a[0]=b;//這么做是不被允許的
   cout<<a[0]<<endl;
   return 0;
}

編譯器報錯了,提示我們這樣做是不被允許的。

但是捏,一個數(shù)組整體可以作為另一個數(shù)組的引用:

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
    int a[2];
 a[0]=1;
 a[1]=2;
    int (&b)[2]=a;
    b[0]=3;
    b[1]=4;
 cout<<a[0]<<endl;
    cout<<a[1]<<endl;
 return 0;  
}

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
    int a[2];
 a[0]=1;
 a[1]=2;
    int (&b)[2]=a;
    b[0]=3;
    b[1]=4;
 cout<<a[0]<<endl;
    cout<<a[1]<<endl;
 return 0;  
}

因為數(shù)值中的元素是不可以其他變量的引用的額,所以需要用(&b)來說明,這是數(shù)組整體引用,然后還必須寫清楚數(shù)組的大小,即:
復(fù)制代碼 代碼如下:

(int (&b)[2])

這個使用方法,也就引出了,數(shù)組作為函數(shù)的形參的使用方法。

我們再看數(shù)組作為函數(shù)的形參的時候應(yīng)該是怎樣的。

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
 void sm(int (&b)[2]);
        int a[2];
 a[0]=1;
 a[1]=2;
 sm(a);
 cout<<a[0]<<endl;
        cout<<a[1]<<endl;
 return 0;  
}
 void sm(int (&b)[2]){
  b[0]=3;
  b[1]=4;
 }

輸出結(jié)果是

3

4

復(fù)制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
    int a[2];
 a[0]=1;
 a[1]=2;
    int (&b)[2]=a;
    b[0]=3;
    b[1]=4;
 cout<<a[0]<<endl;
    cout<<a[1]<<endl;
 return 0;  
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 德清县| 高陵县| 卢湾区| 万年县| 玉门市| 沽源县| 霸州市| 资阳市| 莱阳市| 滕州市| 陈巴尔虎旗| 梨树县| 贡山| 永靖县| 澎湖县| 江华| 水城县| 鄱阳县| 江孜县| 芦山县| 凤山市| 多伦县| 建阳市| 宝山区| 陈巴尔虎旗| 新丰县| 弥勒县| 汽车| 郑州市| 柘荣县| 虹口区| 六枝特区| 荔浦县| 荃湾区| 乌拉特中旗| 永寿县| 巴彦县| 舞阳县| 潮州市| 兰溪市| 阳东县|