c++ -- 二維陣列引數傳遞
都知道,陣列名和函式名一樣,可以當做指標(普通指標和函式指標)來用。
關於二維陣列做為形參宣告和實參傳遞,直接看程式碼:
#include <iostream>
using namespace std;
/*傳二維陣列*/
//第1種方式:傳陣列,第二維必須標明
/*void display(int arr[][4])*/
void display1(int arr[][4],const int irows)
{
for (int i=0;i<irows;++i)
{
for(int j=0;j<4;++j)
{
cout<<arr[i][j]<<" "; //可以採用parr[i][j]
}
cout<<endl;
}
cout<<endl;
}
//第2種方式:一重指標,傳陣列指標,第二維必須標明
/*void display(int (*parr)[4])*/
void display2(int (*parr)[4],const int irows)
{
for (int i=0;i<irows;++i)
{
for(int j=0;j<4;++j)
{
cout<<parr[i][j]<<" "; //可以採用parr[i][j]
}
cout<<endl;
}
cout<<endl;
}
//注意:parr[i]等價於*(parr+i),一維陣列和二維陣列都適用
//第3種方式:傳指標,不管是幾維陣列都把他看成是指標
/*void display3(int *arr)*/
void display3(int *arr,const int irows,const int icols)
{
for(int i=0;i<irows;++i)
{
for(int j=0;j<icols;++j)
{
cout<<*(arr+i*icols+j)<<" "; //注意:(arr+i*icols+j),不是(arr+i*irows+j)
}
cout<<endl;
}
cout<<endl;
}
/***************************************************************************/
/*
//第2種方式:一重指標,傳陣列指標void display(int (*parr)[4])
//缺陷:需要指出第二維大小
typedef int parr[4];
void display(parr *p)
{
int *q=*p; //q指向arr的首元素
cout<<*q<<endl; //輸出0
}
typedef int (*parr1)[4];
void display1(parr1 p)
{
cout<<(*p)[1]<<endl; //輸出1
cout<<*p[1]<<endl; //輸出4,[]運算子優先順序高
}
//第3種方式:
void display2(int **p)
{
cout<<*p<<endl; //輸出0
cout<<*((int*)p+1+1)<<endl; //輸出2
}
*/
int main()
{
int arr[][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int irows=3;
int icols=4;
display1(arr,irows);
display2(arr,irows);
//注意(int*)強制轉換.個人理解:相當於將a拉成了一維陣列處理。
display3((int*)arr,irows,icols);
return 0;
}
推薦使用第2種方式,簡單明瞭!
相關文章
- 二級指標,二維陣列函式引數傳遞指標陣列函式
- Shell自學二(引數傳遞和陣列)陣列
- C++動態建立二維陣列,二維陣列指標,以及動態二維陣列函式傳遞C++陣列指標函式
- 二維陣列作為引數傳遞問題陣列
- 引數為*&與*的區別以及二維陣列傳遞時列數不對等的區別陣列
- 二維陣列傳參陣列
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- C/C++獲取二維陣列行列數C++陣列
- C++引數的傳遞方式C++
- 二維陣列傳參要點陣列
- C++ 使用 new 建立二維陣列C++陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- Js傳遞陣列引數到後臺controller的方式JS陣列Controller
- Java方法04:命令列傳遞引數、可變引數Java命令列
- C/C++中的引數傳遞方式C++
- 二維陣列傳參做形參陣列
- 引數傳遞
- Java後臺接收前端傳遞的陣列物件引數的處理Java前端陣列物件
- C語言結構體及函式傳遞陣列引數示例C語言結構體函式陣列
- Day18--命令列傳遞引數命令列
- 二維陣列陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- PHP二維陣列轉一維陣列PHP陣列
- php url傳遞陣列PHP陣列
- C++用new建立二維陣列的方法C++陣列
- JNI傳遞引數
- Mybatis引數傳遞MyBatis
- PHP中二維陣列與多維陣列PHP陣列
- JavaScript --二維陣列查詢一維陣列JavaScript陣列
- vector 二維陣列陣列
- Java二維陣列Java陣列
- JavaScript二維陣列JavaScript陣列
- JavaScript 二維陣列JavaScript陣列
- 二維陣列排序陣列排序
- 二維陣列動態開闢與傳參陣列
- JavaScript二維陣列轉換成一維陣列JavaScript陣列