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]的值

标签:数组,指针,函数参数
0
投稿

猜你喜欢

  • 教你如何监控 Java 线程池运行状态的操作(必看)

    2023-02-09 04:34:13
  • Java编程实现排他锁代码详解

    2021-06-11 06:00:23
  • Java Socket 编程详解

    2022-06-13 12:06:57
  • Android 6.0 扫描不到 Ble 设备需开启位置权限的方法

    2021-09-15 04:59:25
  • maven profile动态选择配置文件详解

    2023-11-05 22:05:20
  • javamail 发送邮件的实例代码分享

    2021-12-22 15:10:47
  • springboot项目启动,但是访问报404错误的问题

    2022-09-21 10:30:10
  • Java 数组高频考点分析讲解

    2021-09-01 13:14:36
  • SpringCloud之熔断器Hystrix的实现

    2021-09-21 01:39:26
  • 浅谈java中OO的概念和设计原则(必看)

    2023-11-24 13:09:56
  • Java 数据结构与算法系列精讲之哈希算法实现

    2022-01-10 23:56:07
  • Java中的this和super实例浅析

    2023-03-03 13:24:09
  • 如何自定义hibernate validation注解示例代码

    2021-08-31 12:05:51
  • Java虚拟机执行引擎知识总结

    2023-06-05 17:34:31
  • IDEA 单元测试覆盖技巧分享

    2022-09-09 03:50:26
  • Java并发工具类LongAdder原理实例解析

    2023-11-25 15:50:20
  • @RequestBody的使用详解

    2023-03-08 04:17:28
  • Java日常练习题,每天进步一点点(32)

    2022-04-29 07:12:53
  • Spring源码之请求路径匹配路由方式

    2022-04-09 03:11:19
  • Spring框架的环境搭建和测试实现

    2023-10-27 17:57:57
  • asp之家 软件编程 m.aspxhome.com