麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

關于數組做函數參數的問題集合匯總

2020-01-26 15:43:17
字體:
來源:轉載
供稿:網友

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

作為例子的代碼:

復制代碼 代碼如下:

#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;
}

輸出結果是:2

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

復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
        void alter(int b[]);//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[0]=3;
 b[1]=4;
}

輸出結果是:

3

4

如果我們這樣寫:

復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
        void alter(int b[20]);//b[]括號里面的數值可寫可不寫,其作用是使編譯系統把它當作一維數組來處理
        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;
}

輸出結果:

4

8

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

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

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

復制代碼 代碼如下:

#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;
}

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

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

接下來,總結一下,數組的引用相關問題

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

復制代碼 代碼如下:

#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; 
}

輸出結果是:5

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

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

看下面的代碼:

復制代碼 代碼如下:

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

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

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

復制代碼 代碼如下:

#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;  
}

復制代碼 代碼如下:

#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;  
}

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

(int (&b)[2])

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

我們再看數組作為函數的形參的時候應該是怎樣的。

復制代碼 代碼如下:

#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;
 }

輸出結果是

3

4

復制代碼 代碼如下:

#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;  
}

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

圖片精選

主站蜘蛛池模板: 在线播放的av网站 | 7777视频| 欧美性猛交xxxxx按摩国内 | 91成人免费版 | 91精品国产91久久久久久不卞 | 亚洲少妇诱惑 | 在线观看视频日本 | 国产一区二区午夜 | 国产在线播放一区二区 | 国产91久久久久 | 欧洲精品色| 久久夜夜视频 | 中文字幕综合在线观看 | 国产一区二区免费看 | 91aa.app | 成年免费观看视频 | 一级一级一级毛片 | 国产一区二区三区四 | 国产精品99久久久久久大便 | 极品美女一级毛片 | 免费国产网站 | 国产视频精品在线 | 成年人黄视频 | 黄网站在线免费看 | 欧美日韩高清在线观看 | 国产美女爽到喷白浆的 | 久久免费视频精品 | 国产亲子伦在线观看 | 伊人午夜 | 福利在线小视频 | 国产精品久久久久久久四虎电影 | 日韩毛片一区二区三区 | 国产瑟瑟视频 | 久久久资源网 | 日日摸夜夜添夜夜添牛牛 | 欧美亚洲黄色 | 一级大黄毛片 | 黄色网址免费在线播放 | 成人一区二区三区在线 | xvideos korean| 国产精品91在线 |