C/C++知识点之C指针(2)——指针在函数中的应用(程序讲解)
小标 2018-08-10 来源 : 阅读 1837 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C指针(2)——指针在函数中的应用(程序讲解),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C指针(2)——指针在函数中的应用(程序讲解),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

3-1.c指针用作函数参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
  typedef unsigned char uint8_t;   //类型自定义,通过typedef语句重新把unsigned char命名为uint8_t,目的为了方便
  extern void swapdata(uint8_t dat_x,uint8_t dat_y);
int main(void)
{
  uint8_t x,y;
  printf("请输入x,y:");
  scanf("%d,%d",&x,&y);
  printf("交换前:x=%d,y=%d\n",x,y);
  swapdata(x,y);
  printf("交换后:x=%d,y=%d\n",x,y);
  return 0;
}
  void swapdata(uint8_t dat_x,uint8_t dat_y) 
{
  uint8_t temp;
  temp=dat_x;
  dat_x=dat_y;
  dat_y=temp;
}
目的:是为了通过swapdate()函数把实参x,y的值进行交换,上述例子是将形参dat_x,dat_y的值进行交换,但是形参的交换并没有改变实参的交换,因为函数在调用时给形参分配了单独的内存空间,实参的值传递给形参实际是把实参的值放在形参的内存空间,形参的值是实参的备份,因此形参交换,实参并不会交换,不能达到交换实参的目的。 

 结果:

1
2
3
请输入x,y:30,20
交换前:x=30,y=20
交换后:x=30,y=20
 

3-2 函数调用时,把指针作为函数参数进行传递,即传递变量的地址。在被调函数中,通过指针操作相应的变量,实际操作变量本身。在被调函数中对形参的操作实际就是对实参的操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
typedef unsigned char uint8_t;
extern void swapdata(uint8_t *dat_x,uint8_t *dat_y);  //函数参数变成指针
int main(void)
{
  uint8_t x,y;
  uint8_t *p_x,*p_y;
  printf("请输入x,y:");
  scanf("%d,%d",&x,&y);
  p_x=&x;
  p_y=&y;
  printf("交换前:x=%d,y=%d\n",x,y);
  swapdata(p_x,p_y);
  printf("交换后:x=%d,y=%d\n",x,y);
  return 0;
}
  void swapdata(uint8_t *dat_x,uint8_t *dat_y)   //形参为两个指针变量,目的是为了承接实参的值,实参是指针类型,
{
  uint8_t temp;
 temp=*dat_x;    //通过取值运算符*与指针变零dat_x结合,访问实参x;调用swapdate()后,指针变量dat_x指向实参x,对*dat_x的操作实际是对实参x的操作。
 *dat_x=*dat_y;
 *dat_y=temp;
}
 结果:

1
2
3
请输入x,y:10,20
交换前:x=10,y=20
交换后:x=20,y=10    

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved