数组作为函数参数使用方法总结

数组作为函数参数使用方法总结

C/C++数组作为函数参数使用方法总结

一维数组作为函数参数的三种方法:

方法1:形参与实参都用数组;

方法2:形参与实参都用对应数组的指针;

方法3:实参用数组名,形参用引用;

二维数组作为函数参数的四种方法:

C/C++语言中把二维数组看作1个特殊的一维数组,它的数组元素又是1个一维数组。二维数组的存储也是按照一维数组来处理的,二维数组按照行展开的方式按顺序存储;所以在利用二维数组作为参数传递时,必须指定二维数组的列数,否则函数无法勾画出二维数组的组织形式。只有有了列长度,通过下标array2D[i][j]时才能得到正确的下标地址。

方法1:在参数声明中指定二维数组的列数;

方法2:把参数声明为一个指向数组的指针;

方法3:把参数声明为指向指针的指针;

方法4:二维数组看成一维数组访问;

//一维数组作为函数参数的三种方法:

#include "iostream"

using namespace std;

//用类型定义语句定义一个int型的数组类型

typedef int arrayD[6];

//方法1:形参与实参都用数组

/*下面这两种写法等价,这里的数字“6”并没有什么卵用*/

void print1DArraay1(int array1D[], const int length );

void print1DArraay11(int array1D[6], const int length);

//方法2:形参与实参都用对应数组的指针

void print1DArraay2(int *array1D, const int length);

//注:方法1与方法2等价

//方法3:实参用数组名,形参用引用;

/*C++中经常使用这种调用方式;下面是等价的两种写法*/

void print1DArraay3(arrayD &array1D, const int length);

void print1DArraay32(int(&array1D)[6], const int length);

int main()

{

int array1D[6] = {0,1,2,3,4,5};

print1DArraay1(array1D, 6);

print1DArraay2(array1D, 6);

print1DArraay3(array1D, 6);

print1DArraay32(array1D, 6);

system("pause");

return 0;

}

void print1DArraay1(int array1D[], const int length)

{

for (int i = 0; i < length; i++)

{

printf("array1D[%d] = %d\n", i, array1D[i]);

}

}

void print1DArraay2(int *array1D, const int length)

{

for (int i = 0; i < length; i++)

{

printf("array1D[%d] = %d\n", i, *(array1D+i));

}

}

void print1DArraay3(arrayD &array1D, const int length)

{

for (int i = 0; i < length; i++)

{

printf("array1D[%d] = %d\n", i, array1D[i]);

}

}

void print1DArraay32(int(&array1D)[6], const int length)

{

for (int i = 0; i < length; i++)

{

printf("array1D[%d] = %d\n", i, array1D[i]);

}

}

//二维数组作为函数参数的四种方法:

#include

using namespace std;

//方法1:在参数声明中指定二维数组的列数

//srcData的声明看起来是一个二维数组,实际上形参是指向含有6个int的数组指针

void print2Darray1(int srcData[][6],const int rows, const int cols);

//方法2:把参数声明为一个指向数组的指针

//srcData指向数组的首元素,该数组由6个整数构成;所以方法1与方法2等价*/

void print2Darray2(int (*srcData)[6], const int rows, const int cols);

//方法3:把参数声明为指向指针的指针

void print2Darray3(int **srcData, const int rows, const int cols);

//方法4:二维数组看成一维数组访问

void print2Darray4(int *srcData, const int rows, const int cols);

int main()

{

int array2D[2][6] = { { 0, 1, 2, 3, 4, 5 },{ 6, 7, 8, 9, 10, 11 } };

//定义一个指针数组

int *p[2] = { array2D[0],array2D[1] };

print2Darray1(array2D, 2, 6);

print2Darray2(array2D, 2, 6);

print2Darray3(p, 2, 6);

print2Darray4(array2D[0], 2, 6);

system("pause");

return 0;

}

void print2Darray1(int srcData[][6], const int rows, const int cols)

{

for (int row = 0; row < rows;row++)

{

for (int col = 0; col < cols; col++)

{

printf("srcData[%d][%d] = %d\n",row,col, srcData[row][col]);

}

}

}

void print2Darray2(int (*srcData)[6], const int rows, const int cols)

{

for (int row = 0; row < rows; row++)

{

for (int col = 0; col < cols; col++)

{

printf("srcData[%d][%d] = %d\n", row, col, srcData[row][col]);

}

}

}

void print2Darray3(int **srcData, const int rows, const int cols)

{

for (int row = 0; row < rows; row++)

{

for (int col = 0; col < cols; col++)

{

printf("srcData[%d][%d] = %d\n", row, col, srcData[row][col]);

}

}

}

void print2Darray4(int *srcData, const int rows, const int cols)

{

for (int row = 0; row < rows; row++)

{

for (int col = 0; col < cols; col++)

{

printf("srcData[%d] = %d\n", (row*cols + col), srcData[row*cols + col]);

}

}

}

相关灵感

博彩365bet网址导航 CSS秘籍:如何轻松实现浮动元素完美居中布局?
beat365官网下载苹果手机 国际会议投稿论文收录到哪里?详解学术数据库与检索平台
beat365官网下载苹果手机 陈妍希是哪个星座?

陈妍希是哪个星座?

📅 06-29 👁️ 2670
博彩365bet网址导航 江里钓 鲢鳙 包头 最好的的配料方法是?
博彩365bet网址导航 全曝光了!明星在上海都住这些小区!但看上去没有想象中那么贵
beat365官网下载苹果手机 请问天神贷放款中多久到账?账户中已经现在在放款中了。
beat365官网下载苹果手机 遗的繁体字

遗的繁体字

📅 07-03 👁️ 8815
365bet365打不开 玩CF卡屏一顿一顿的怎么办?解决游戏卡顿问题的方法分享
beat365官网下载苹果手机 DLL教程--如何编写、调用DLL(附图说明)