您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關二維數組作為函數的實參以及定義函數形參的方法是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
#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 //
看完上述內容,你們對二維數組作為函數的實參以及定義函數形參的方法是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。