数组作为函数参数使用方法总结 您所在的位置:网站首页 c语言函数返回数组的方式有哪些 数组作为函数参数使用方法总结

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

2024-03-10 22:35| 来源: 网络整理| 查看: 265

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]); } } }

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有