看完这篇文章一定弄懂C语言数组作为函数参数的用法

您所在的位置:网站首页 c语言自定义函数的形式中有哪三个要素组成 看完这篇文章一定弄懂C语言数组作为函数参数的用法

看完这篇文章一定弄懂C语言数组作为函数参数的用法

2024-01-29 08:46| 来源: 网络整理| 查看: 265

C语言数组作为函数参数

文章目录 一:数组元素作为函数的实参二:数组名作为函数的实参关于数组作为函数参数调用的讨论*将函数参数定义为指针的形式关于函数定义的参数表的讨论 三:二维数组名作为函数参数*将函数参数定义为指针的形式(1)第一维是指针,第二维是数组(2)二维指针并不能达到传递普通二维数组的效果(3)只有动态申请的二维数组才可通过二维指针作为函数参数传递 获取二维数组的行和列 四:更高维数组作为函数参数同二维数组类似五:参考文档

一:数组元素作为函数的实参

数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。 因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。

在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。

#include float max(float x,float y) { if(x > y) return x; else return y; } int main() { int a[6] = {3,2,1,4,9,0}; int m = a[0]; for(int i = 1;i for (int i=0;i if (b[j] > b[j + 1]) { int temp = 0; temp = b[j]; b[j] = b[j + 1]; b[j + 1] = temp; } } } } int main() { int a[6] = { 3,2,1,4,9,0 }; sort(&a[0], sizeof(a) / sizeof(a[0])); for (int i = 0; i for (int i=0;i if (b[j] > b[j + 1]) { int temp = 0; temp = b[j]; b[j] = b[j + 1]; b[j + 1] = temp; } } } } int main() { int c[6] = { 3,2,1,4,9,0 }; sort(c,6); for (int i = 0; i int m = 0; for (int i = 0; i if (m int a[2][3] = { 3,2,1,4,9,0 }; int sizea = sizeof(a); int maxVal = max(a); printf("max is %d ", maxVal); return 0; }

在这里插入图片描述 注意形参二维数组的第二维必须与实参一致,否则会报错,如下图所示: 在这里插入图片描述 第一维除了不能为0以外,都可以,实际编程中直接与实参的维度一样,没必要制造麻烦。 在这里插入图片描述 在这里插入图片描述

*将函数参数定义为指针的形式

可以达到同样的效果

(1)第一维是指针,第二维是数组

且第二维数组的长度必须和实参的长度一样,否则调用该函数时编译无法通过

举例

#include int max(int (*b)[3], int row, int col) { int m = 0; for (int i = 0; i 3,2,1,4,9,0 }; int maxVal = max(a,2,3); printf("max is %d \n", maxVal); for (int i = 0; i printf("%d ", a[i][j]); } printf("\n"); } return 0; }

测试结果 在这里插入图片描述

(2)二维指针并不能达到传递普通二维数组的效果

现象: 在这里插入图片描述 强转也不行: 在这里插入图片描述 原因 参考文档

(3)只有动态申请的二维数组才可通过二维指针作为函数参数传递

代码:

int max1(int **b, int row, int col) { int m = 0; for (int i = 0; i 3,2,1,4,9,0 }; int maxVal = max(a,2,3); int row = 2,col = 3; int** a1 = new int*[row]; for (int i = 0; i printf("%d ", a1[i][j]); } printf("\n"); } return 0; }

测试: 在这里插入图片描述

获取二维数组的行和列

获取二维数组的行和列是经常遇到的

定义一个二维数组int array[A][B],可以通过计算sizeof获取行列数。 sizeof(array[0][0])为一个元素占用的空间, sizeof(array[0])为一行元素占用的空间, sizeof(array)为整个数组占用的空间, 行数 = sizeof(array)/sizeof(array[0]); 列数 = sizeof(array[0])/sizeof(array[0][0]); 在这里插入图片描述 根本原因: 在这里插入图片描述

测试: 在这里插入图片描述

四:更高维数组作为函数参数同二维数组类似

举例

#include "conv1.h" #include #include using namespace std; float max(const float conv1_weight[64][3][3][3][3]); int main() { int a[2][3] = { 0,1,2, 3,4,5 }; cout if (max


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3