雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊:

首先是數(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;  
}

上一篇:輸入3個字符串,將它們按照字母由大到小排序(示例代碼)

欄    目:C語言

下一篇:C++中的對象數(shù)組詳細(xì)解析

本文標(biāo)題:關(guān)于數(shù)組做函數(shù)參數(shù)的問題集合匯總

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3954.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有