二維陣列作為函式的實參,定義函式形參的方法

2021-06-28 05:23:24 字數 2380 閱讀 2077

#include #include using namespace std;

//method first//

//直接用二維陣列的形式

void fun(int a[3][4])

cout<}

}/method second//

//用指向陣列的指標

void fun1(int (*p)[4])

cout<}

}///method third/

//形參採用指標,如int* p,而主函式進行特殊操作,使二維陣列傳值到函式裡。

void fun2(int *p)

cout<}method forth

//用指向指標的指標,如int** p,

void fun3(int **p)

cout<}

}int main(int argc,char* argv)

; fun(a);

cout

cout

// 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; ifor(int i=0; i}

cout<<"p="

cout<<"b="

//刪除自己申請的空間

for(int i=0; icout

cout<<"delete p"

// 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

//

二維陣列 作為函式引數

前言 今天在實現裝配線排程程式時候,用到了二維陣列,並將其作為函式的引數。在寫程式的時候,遇到一些問題,即二維陣列做函式的引數應該如何正確表示。我寫程式的錯誤如下程式所示 1 include 2 void print int a 3 3 67intmain 8 10print a 11return0...

函式的形參與實參(二維陣列)

int a 2 其中a 既不是 int 也不是 int 也不是 int 2 而是 int 型別。int 指指向指標的指標。int 2 指指向陣列的指標,數字2 代表了每行的步長。這個陣列中儲存的是原陣列每行的首元素的位址 我猜的 對於fun a 如果函式的形參為 fun int b 2 這是預設的。...

陣列作為函式實參

陣列作為函式實參 c語言中陣列作為函式實參時,編譯器總是將其解析為指向陣列首元素位址的指標 位址呼叫 原因 我們知道c 語言函式的呼叫有傳值和傳位址呼叫。假設 c語言對陣列採用傳值呼叫 對實參作乙份拷貝,傳遞給被呼叫函式,函式不能修改實際實參值,而只能改變其拷貝 然後如果拷貝整個陣列,則在時間和空間...