欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年10月21日 09:48:52   作者:  
本文是對關(guān)于數(shù)組做函數(shù)參數(shù)的問題進行了詳細(xì)的匯總,需要的朋友可以過來參考下。希望對大家有所幫助

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

相關(guān)文章

  • C語言數(shù)據(jù)(整數(shù)、浮點數(shù))在內(nèi)存中的存儲

    C語言數(shù)據(jù)(整數(shù)、浮點數(shù))在內(nèi)存中的存儲

    之前對c語言數(shù)據(jù)存儲一直不太明白,最近仔細(xì)研究了一番,所以下面這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)(整數(shù)、浮點數(shù))在內(nèi)存中存儲的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 基于C語言實現(xiàn)簡易三子棋游戲

    基于C語言實現(xiàn)簡易三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實現(xiàn)簡易三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>
    2022-01-01
  • C語言數(shù)字圖像處理之圖像縮放

    C語言數(shù)字圖像處理之圖像縮放

    這篇文章主要為大家詳細(xì)介紹了C語言數(shù)字圖像處理之圖像縮放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解C語言結(jié)構(gòu)體,枚舉,聯(lián)合體的使用

    詳解C語言結(jié)構(gòu)體,枚舉,聯(lián)合體的使用

    這篇文章主要給大家介紹一下關(guān)于C語言中結(jié)構(gòu)體、枚舉、聯(lián)合體的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考一下
    2022-07-07
  • 在C++中反射調(diào)用.NET的方法(一)

    在C++中反射調(diào)用.NET的方法(一)

    為什么要在C++中調(diào)用.NET呢?接下來通過本文給大家介紹在C++中反射調(diào)用.NET的方法(一),需要的朋友參考下吧
    2017-02-02
  • 內(nèi)聯(lián)函數(shù)inline與宏定義深入解析

    內(nèi)聯(lián)函數(shù)inline與宏定義深入解析

    類的內(nèi)斂函數(shù)是一個真正的函數(shù)。使用內(nèi)聯(lián)函數(shù)inline可以完全取代表達(dá)式形式的宏定義
    2013-09-09
  • C語言 格式化讀寫文件詳解

    C語言 格式化讀寫文件詳解

    本文主要介紹C語言 格式化讀寫文件,這里提供了關(guān)于格式化讀寫文件的基本資料及實現(xiàn)示例代碼,有興趣的小伙伴可以參考下,以便理解學(xué)習(xí)
    2016-08-08
  • C語言?struct結(jié)構(gòu)體超詳細(xì)講解

    C語言?struct結(jié)構(gòu)體超詳細(xì)講解

    C語言中,結(jié)構(gòu)體類型屬于一種構(gòu)造類型(其他的構(gòu)造類型還有:數(shù)組類型,聯(lián)合類型),下面這篇文章主要給大家介紹了關(guān)于C語言結(jié)構(gòu)體(struct)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • C++深度優(yōu)先搜索的實現(xiàn)方法

    C++深度優(yōu)先搜索的實現(xiàn)方法

    這篇文章主要介紹了C++深度優(yōu)先搜索的實現(xiàn)方法,是數(shù)據(jù)結(jié)構(gòu)中非常重要的一種算法,需要的朋友可以參考下
    2014-08-08
  • C++封裝線程類的實現(xiàn)方法

    C++封裝線程類的實現(xiàn)方法

    這篇文章主要介紹了C++封裝線程類的實現(xiàn)方法,實例介紹了針對線程的創(chuàng)建、調(diào)用等方法的封裝操作,需要的朋友可以參考下
    2014-10-10

最新評論