C++中用指向数组的指针作函数参数
发布时间:2022-08-27 23:11:33
标签:数组,指针,函数参数
1.一维数组名作为函数参数传递
一位数组名,就相当于该数组的首个元素的地址;
int a[10];
int *p;
p=a;
//p=a与p=&a[0]是等价的
实例代码:
#include<iostream>
using namespace std;
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
void Print(int *p ,int n);
Print(a,10);
cout<<endl;
return 0;
}
void Print(int *p ,int n){
int i=0;
for(;i<n;i++){
cout<<*(p+i)<<" ";
}
}
在主函数中,将数组名a作为实参的值,也就是将&a[0]作为实参的值,然后在Print函数中,指向int型变量的指针p用于接收传递过来的值,并进行输出操作。
2.多维数组名作为函数参数传递
在二维数组中,数组名a是指向首行a[0]的指针,也就是说a=&a[0]; a[0]是指向首元素a[0][0]的指针,也就是说a[0]=&a[0][0]
实例代码:
#include<iostream>
using namespace std;
int main(){
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
void Print(int (*p)[4] );
Print(a);
cout<<endl;
return 0;
}
void Print(int (*p)[4] ){
int i=0,j=0;
for(i=0;i<3;i++){
for(j=0;j<4;j++){
cout<<*(*(p+i)+j)<<" ";
}
}
}
p是指向a[0]的指针,那么p+i就是指向a[i]的指针,*(p+i)就是指向a[i][0]的指针,那么*(p+i)+j就是指向a[i][j]的指针,所以*(*(p+i)+j)就是a[i][j]的值


猜你喜欢
- 微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likeb
- Android OnCreate()中获取控件高度与宽度试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与g
- Java Volatile 详解概要:Java 语言中的 Volatile 变量可以被看作是一种 “程度较轻的 synchronized”;
- GradientTextViewGithub点我一个非常好用的库,使用kotlin实现,用于设置TexView的字体 渐变颜色、渐变方向 和
- 一 模式介绍重试模式,是应用在异常处理中,发生异常的时候,能够对业务程序进行重新调用,在实际中,可以使用Polly提供稳定,简单的用法,自己
- 在项目中选择器的使用是非常多的,以下是本人在项目中的一些常用的背景选择器的写法带边框下划线背景选择器效果图:上面布局中放了10个CheckB
- Model与Session区别什么是Session:Session:在计算机中,尤其是在网络应用中,称为“会话”。它具体是指一个终端用户与交
- 基于springboot+vue的测试平台开发继续更新。一、前端Tree树形控件的append方法在elementUI 树控件下有个appe
- 复制文件并命名的超简洁写法没错又是我,这次为大家带来Java中 复制文件并命名的超简洁写法(请确保你的jre在1.8+),这次用到了File
- TestCar.javapublic class TestCar { public static voi
- 实现闹钟运行的效果如下: 通知栏的运行后效果图如下:布局文件(activity_main.xml)<?xml version
- 在混淆编译之前,我的程序可以正常运行,混淆编译时,报告如下错误: Error:Execution failed for task ‘:gvi
- Android 想判断 Activity 是否是全屏,网上找了些方法,看到有直接获取 flags 和一个具体的值比较,并没有用,其实分析下来
- 引言上文Android:实现一个自定义有限制区域的图例(角度自识别)涂鸦工具类(上)中我们已经实现了自定义View签名的功能,包含撤回、清除
- 一、场景笔者就Zuul网关下实现其负载均衡与熔断机制(雪崩)进行实践,前提是已经导入zuul相关依赖springboot版本:1.5.9.R
- 实例如下:import java.lang.reflect.Field;import java.lang.reflect.Invocatio
- 以前面试的时候经常会碰到这样的问题.,叫你写一下ArrayList.LinkedList.Vector三者之间的区别与联系:原先一直搞不明白
- 实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。设备与环境硬件设备:PC机一台
- 实现android双击后退键退出当前APP功能实现该功能基本思路是,1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出2, 退出
- 这篇文章主要介绍了java多线程关键字final和static详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价