#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語言對陣列採用傳值呼叫 對實參作乙份拷貝,傳遞給被呼叫函式,函式不能修改實際實參值,而只能改變其拷貝 然後如果拷貝整個陣列,則在時間和空間...