当前位置: 首页 > news >正文

C语言基础篇5:指针(二)

接上篇:C语言基础篇5:指针(一)

 4 指针作为函数参数

        4.1 指针变量作为函数的参数

        指针型变量可以作为函数的参数,使用指针作为函数的参数是将函数的参数声明为一个指针,前面提到当数组作为函数的实参时,值传递数组的地址,而不是将整个数组赋值给函数中去。当用数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到函数中去。例如,声明一个函数的参数为指针时,传递数组的方法如下:

void Function(int *p);//声明函数
int iArray[10];//声明整型数组
Function(iArray);//将数组名作为实参进行传递

        在上面代码中可以看到,在声明Function时,指针作为函数的参数。在调用函数时,可以将数组名作为函数的实参进行传递。

【示例4.1.1】调用自定义函数交换两个变量的值。

#include <stdio.h>void swap(int *a,int *b){int temp;temp = *a;*a = *b;*b = temp;
}int main() {int x,y,*p_x,*p_y;printf("请输入两个数:\n");scanf("%d",&x);scanf("%d",&y);printf("x = %d\n",x);printf("y = %d\n",y);p_x = &x;p_y = &y;swap(p_x,p_y);printf("两个数交换的结果是\n");printf("x = %d\n",x);printf("y = %d\n",y);return 0;
}

        swap函数是用户自定义函数,在main函数中调用该函数交换变量a和b的值,swap函数的两个形参被传入了两个地址值,也就是传入了两个指针变量,在swap函数的函数体内使用整型变量temp作为中间变量,将两个指针变量所指向的数值进行交换。

        在函数调用过程中,主调用函数与被调用函数之间有一个数值传递过程。函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,在函数调用的过程中,形参的值发生变化,实参的值不会发生变化。通过指针传递参数可以减少值传递带来的“开销”,也可以使函数调用不产生值传递。C语言中实参变量的形参变量之间的数据传递是单向的“值传递”方式。指针变量做函数的参数也是如此。

http://www.lryc.cn/news/246328.html

相关文章:

  • 「Verilog学习笔记」非整数倍数据位宽转换8to12
  • Qt_一个由单例引发的崩溃
  • P8A004-系统加固-磁盘访问权限
  • 数智赋能 锦江汽车携手苏州金龙打造高质量盛会服务
  • kolla-ansible 部署OpenStack云计算平台
  • wireshark 抓包提示
  • Redis未授权访问-CNVD-2019-21763复现
  • 汇编:常用的输入与输出
  • MYSQL基础之【正则表达式,事务处理】
  • Mysql并发时常见的死锁及解决方法
  • 二十九、微服务案例完善(数据聚合、自动补全、数据同步)
  • vue 目录树的展开与关闭
  • 【Docker】python flask 项目如何打包成 Docker images镜像 上传至阿里云ACR私有(共有)镜像仓库 集成Drone CI
  • 力扣labuladong——一刷day55
  • springboot实现验证码功能
  • 内测分发平台是否支持应用的微服务化部署
  • 1140. 最短网络,prim算法,模板题
  • 升级jdk17过程中,原来的jdk8下的webservice客户端怎样处理
  • Verilog基本语法概述
  • 论文阅读:C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range SLAM
  • 蓝桥杯刷题day01——字符串中的单词反转
  • Python---引用变量与可变、非可变类型
  • GDOUCTF2023-Reverse WP
  • Day43力扣打卡
  • elementui的table合并列,三个一组
  • HarmonyOS-Service服务开发(一)
  • FLASK博客系列4——再谈路由
  • sql之left join、right join、inner join的区别
  • 京东秒杀之秒杀详情
  • mobaxterm 下载、安装、使用