中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

二維數組作為函數的實參以及定義函數形參的方法是什么

發布時間:2021-10-14 10:47:42 來源:億速云 閱讀:291 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關二維數組作為函數的實參以及定義函數形參的方法是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

#include <iostream>
#include <iomanip>
using namespace std;

//////////method first//////////////////
//直接用二維數組的形式
void fun(int a[3][4])
{
    for(int i=0; i<3; ++i)
    {
        for(int j=0; j<4; ++j)
        {
            cout<<"a["<<i<<"]["<<j<<"]="<<setw(3)<<a[i][j]<<"\t";
        }
        cout<<endl;
    }
}

/////////////method second//////////////
//用指向數組的指針
void fun1(int (*p)[4])
{
    for(int i=0; i<3; ++i)
    {
        for(int j=0; j<4; ++j)
        {
            cout<<"p["<<i<<"]["<<j<<"]="<<setw(3)<<p[i][j]<<"\t";
        }
        cout<<endl;
    }
}

///////////method third/////////////////
//形參采用指針,如int* p,而主函數進行特殊操作,使二維數組傳值到函數里。
void fun2(int *p)
{
    for(int i=0; i<4; ++i)
    {
        cout<<"p["<<i<<"]="<<setw(3)<<p[i]<<"\t";
    }
    cout<<endl;
}
////////////method forth////////////////
//用指向指針的指針,如int** p,
void fun3(int **p)
{
    for(int i=0; i<3; ++i)
    {
        for(int j=0; j<4; ++j)
        {
            cout<<"p["<<i<<"]["<<j<<"] = "<<setw(5)<<p[i][j]<<"\t";
        }
        cout<<endl;
    }
}


int main(int argc,char* argv[])
{
    int a[3][4]= {0,1,2,3,4,5,6,7,8,9,10,11};
    fun(a);
    cout<<endl;
    fun1(a);
    cout<<endl;
    for(int i=0; i<3; ++i)
    {
        fun2(*(a+i));
    }
//      fun3(a);
//編譯時發生錯誤。int [][]不能轉換為int**
//error: cannot convert ‘int (*)[4]’ to ‘int**’ for argument ‘1’ to ‘void fun3(int**)’
////////////////////////////////////////
    int row=3, col=4;
/////////create the 2d dynamic array////
////////////////////////////////////////
    int **p=new int *[row];
    for(int i=0; i<row; ++i)
    {
//用p[i]指向第一個含有col個元素的數組///
        p[i]=new int[col];
//p[0]、p[1]、p[2]分別指向一個含有col個元素的數組,
    }
////////////////////////////////////////

    for(int i=0; i<row; ++i)
    {
        for(int j=0; j<col; ++j)
        {
            p[i][j]=i*j+j+99;
        }
    }

    cout<<"p="<<p<<"  sizeof(p)="<<sizeof(p)<<" *p = "<<*p<<endl;
    cout<<"p[0]="<<p[0]<<"\t"<<"*(p+0) = "<<*(p+0)<<endl;
    cout<<"p[1]="<<p[1]<<"\t"<<"*(p+1) = "<<*(p+1)<<endl;
    cout<<"p[2]="<<p[2]<<"\t"<<"*(p+2) = "<<*(p+2)<<endl;
    int b[2][5]= {0};
    cout<<"b="<<b<<"\t"<<"b[0]="<<b[0]<<endl;

    fun3(p);

////////////////////////////////////////
//////////刪除自己申請的空間////////////
    for(int i=0; i<row; ++i)
    {
        delete []p[i];
        cout<<"delete p["<<i<<"]"<<"\t";
    }
    cout<<endl;
    delete []p;
    cout<<"delete p"<<endl;
////////////////////////////////////////
    cin.get();
//    return 0;

}
//
//[root@yutong array]# g++ -o twodimarraypara twodimarraypara.cpp
//[root@yutong array]# ./twodimarraypara 
//a[0][0]=  0   a[0][1]=  1     a[0][2]=  2     a[0][3]=  3     
//a[1][0]=  4   a[1][1]=  5     a[1][2]=  6     a[1][3]=  7     
//a[2][0]=  8   a[2][1]=  9     a[2][2]= 10     a[2][3]= 11     
//
//p[0][0]=  0   p[0][1]=  1     p[0][2]=  2     p[0][3]=  3     
//p[1][0]=  4   p[1][1]=  5     p[1][2]=  6     p[1][3]=  7     
//p[2][0]=  8   p[2][1]=  9     p[2][2]= 10     p[2][3]= 11     
//
//p[0]=  0      p[1]=  1        p[2]=  2        p[3]=  3        
//p[0]=  4      p[1]=  5        p[2]=  6        p[3]=  7        
//p[0]=  8      p[1]=  9        p[2]= 10        p[3]= 11        
//p=0x1adf010  sizeof(p)=8 *p = 0x1adf030
//p[0]=0x1adf030        *(p+0) = 0x1adf030
//p[1]=0x1adf050        *(p+1) = 0x1adf050
//p[2]=0x1adf070        *(p+2) = 0x1adf070
//b=0x7fff0c6e79f0      b[0]=0x7fff0c6e79f0
//p[0][0] =    99       p[0][1] =   100 p[0][2] =   101 p[0][3] =   102 
//p[1][0] =    99       p[1][1] =   101 p[1][2] =   103 p[1][3] =   105 
//p[2][0] =    99       p[2][1] =   102 p[2][2] =   105 p[2][3] =   108 
//delete p[0]   delete p[1]     delete p[2]     
//delete p
//

看完上述內容,你們對二維數組作為函數的實參以及定義函數形參的方法是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉木萨尔县| 鄂托克前旗| 永年县| 浠水县| 利川市| 成都市| 云阳县| 肥乡县| 义马市| 固阳县| 宾阳县| 永康市| 凤山县| 海淀区| 无棣县| 互助| 峨山| 巩义市| 松潘县| 万荣县| 象山县| 双鸭山市| 望奎县| 罗山县| 德化县| 当涂县| 即墨市| 菏泽市| 塔河县| 米脂县| 阿瓦提县| 曲沃县| 丘北县| 马尔康县| 扶沟县| 睢宁县| 黄平县| 海宁市| 攀枝花市| 来安县| 大邑县|