二维数组作为函数参数传递的三种方式
- 指针
- 1.形参声明为二维数组
- 2.形参声明为一级指针
- 3.形参声明为二级指针
指针
关于指针的介绍和基础应用推荐一位B站up主的视频
- 【C指针】十分钟、你要是听不懂、我当场就把这个编译器…
1.形参声明为二维数组
以求矩阵最大值为例
#include <bits/stdc++.h>
using namespace std;
const int N = 2;//要改变二维数组的行和列
const int M = 3;//只需改变这里即可
void fun(int array[][M], int, int);
//void fun(int (*array)[M], int, int);//也可这样声明,意义与下面声明为一级指针相同
int main(){int a[N][M] = {{1, 2, 3}, {4, 5, 6}};fun(a, N, M);return 0;
}void fun(int array[][M], int N, int M)
{int max = array[0][0];for (int i = 0; i < N; i ++){for (int j = 0; j < M; j ++){if(max < array[i][j]) max = array[i][j]; }}cout << max;
}
2.形参声明为一级指针
以求矩阵最大值为例
#include <bits/stdc++.h>
using namespace std;
const int N = 2;//要改变二维数组的行和列
const int M = 3;//只需改变这里即可
void fun(int* ,int ,int);
int main(){int a[N][M] = {{1, 2, 3}, {4, 5, 6}};int *p = a[0];//定义指针用于储存二维数组第一行的首地址,也就是把二维数组当作一维数组 fun(p, N, M);//函数调用时传入指针 p return 0;
}void fun(int *array, int n, int m){int max = array[0];//将 max 预设为数组的第一项 for (int i = 0; i < n * m; i ++){if(max < array[i]) max = array[i];}cout << max;
}
3.形参声明为二级指针
以求矩阵最大值为例
#include <bits/stdc++.h>
using namespace std;
const int N = 2;//要改变二维数组的行和列
const int M = 3;//只需改变这里即可
void fun(int** , int, int);
int main(){int a[N][M] = {{1, 2, 3}, {4, 5, 6}};int *p[N];//定义指针数组用于储存二维数组每行的首地址p[0] = &a[0][0];//也可以写为 a[0],目的是令 p 记录下二维数组每一行的首地址 p[1] = &a[1][0];//也可写为a[1],理由同上 // for(int i = 0; i < N; i ++){//也可写成这样的循环赋指针
// p[i] = &a[i][0];
// //p[i] = a[i];
// }fun(p, N, M);//函数调用时传入指针 p return 0;
}void fun(int **array, int n, int m){int max = array[0][0];for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if(max < array[i][j]) max = array[i][j];}}cout << max;
}
二维数组作为函数参数传递的三种方式相关推荐
- C语言 二维数组作为函数参数的4种方式
前言 多维数组中,二维数组是最常用的一种.在C语言编程中,二维数组的定义.取值以及赋值都比较容易,与一维数组类似.然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解.本文章是实用型文章,注 ...
- 二维数组作为函数参数传递
二维数组作为函数参数调用过程中: void Fun(**a, m, n) {//.... } //.... Fun(a,m,n); 调用函数过程中,会发现VS报错: //IntelliSense: & ...
- 第二周项目1函数参数传递的三种方式
/* .*Copyright (c) 2014,烟台大学计算机学院 *All right reserved. *文件名称:函数参数传递的三种方式.cpp *作者:彭子竹 *完成日期:2015年9月11 ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}// ...
- 二维数组作为函数参数传递剖析(C语言)
前言: 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}/ ...
- C语言二维数组作为函数参数传递
二维数组存放方式 二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行-.. 二维数组作为函数参数 二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小 ...
- js二维数组定义和初始化的三种方法
方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1",&quo ...
- 【C语言】二维数组作为函数参数传递
二维数组只能作为函数实参传递 方法一 int in(int a[][j]); in(a); #include<stdio.h> #define i 3 #define j 3//输入二维数 ...
- c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例
在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...
最新文章
- C#设计技巧总结 网上转贴
- 人工智能行业应用之:为建筑工程提供全新解决方案
- 现代软件工程 团队博客作业 如何评价个人在团队中的绩效
- 什么原因导致芯片短路_血压中的低压高是什么原因导致的?会导致什么疾病?...
- html input 字体颜色_input使用小技巧
- 三相同步电机怎么接线图_智能电表怎么接线 单相 三相电表接线图大全
- 靠信用购物!芝麻信用上线新功能:用户可先用后买
- 利用计算机形考试二,计算机应用基础形考试题
- 你说“神马”?非正式汉语数据集资源上线,帮你训练网络语言处理
- 保姆级别mysql 基础练习题
- 软件项目验收汇报ppt_扔掉你收藏的PPT吧,设计院专用项目汇报模板来袭(68GB)!...
- ECharts快速上手 入门教学
- 黑群晖二合一已损毁_黑群晖二合一ghost安装教程(蜜獾超存可用)
- Ubuntu安装riscv-gnu-toolchain和riscv-tools
- OCCT 建模,VTK显示
- python如何进行md5解密_python写一个md5解密器
- Learn Git Branching 学习笔记(基础篇)
- matlab containers,matlab中的containers.Map()
- 让洁净煤保障群众温暖过冬
- opencv图像识别训练实例
热门文章
- Python 定义类和属性
- ubuntu关闭防火墙命令
- 如何准备软件工程师的面试[转载]
- 旧改快讯--星河操刀,龙华稳健工业园项目专规获批
- ❤️数据可视化❤️:基于Echarts + GeoJson实现的地图视觉映射散点(气泡)组件【20】 - 山东省
- 关于计算机的英语手抄报简单,英语手抄报图片大全简单又漂亮少字
- 什么是 Livepeer?
- mysql unix时间加索引_【mysql】mysql时间字段怎么加索引
- 超郁闷的,2010年春节假期(农历新年)放假安排时间表
- 软件架构--入门导读--欲穷千里目,更上一层楼