此篇博客程序运行环境为:VS2017!!!

函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。

它的作用是将一个变量的的地址传给被调用函数的形参。

e.g. 输入两个数,按由大到小顺序输出

#include<iostream>
using namespace std;
int main()
{void swap(int *p1, int *p2);int *p1, *p2, a, b;cin >> a >> b;p1 = &a;p2 = &b;if (a < b){swap(p1, p2);}cout <<"max="<< a << " min=" << b << endl;return 0;
}
void swap(int *p1, int *p2)
{int t;t = *p1;*p1 = *p2;*p2 = t;
}

e.g.输入三个数,从大到小排序

#include <iostream>
using namespace std;
int main()
{void exchange(int *, int *, int *);int a, b, c, *p1, *p2, *p3;cin >> a >> b >> c;p1 = &a;p2 = &b;p3 = &c;exchange(p1, p2, p3);cout << a << " " << b << " " << c << endl;return 0;
}
void exchange(int *p1, int *p2, int *p3)
{void swap(int *x, int *y);if (*p1 < *p2)    swap(p1, p2);if (*p1 < *p3)  swap(p1, p3);if (*p2 < *p3)  swap(p2, p3);
}
void swap(int *x, int *y)
{int t;t = *x; *x = *y; *y = t;
}

本题采用的方法是:交换a和b的值,而p1,p2不变

注意以下几点:

1、不要将main函数里的swap函数调用写成:

if (a < b)    swap(*p1, *p2);

*p1和*p2是整型变量,其值为整数,与形参不匹配。

2、单向的值传递,只能从实参向形参传数据,形参值的改变无法回传给实参。

void swap(int x, int y)
{int t;t = x;x = y;y = t;
}

3、

#include<iostream>
using namespace std;
int main()
{void swap(int *p1, int *p2);int *p1, *p2, a, b;cin >> a >> b;p1 = &a;p2 = &b;if (a < b){swap(p1, p2);}cout <<"max="<< a << " min=" << b << endl;return 0;
}
void swap(int *p1, int *p2)
{int *t;t = p1;p1 = p2;p2 = t;
}

写该程序的人意图在交换p1和p2的值。

但是要特别注意:调用函数时不会改变实参指针变量的值,但可以改变实参指针变量所指向的变量的值。

函数的调用可以(而且只可以)得到一个返回值(函数值),而是用指针变量作为函数的参数,就可以通过指针变量改变主调函数中的参数值,相当于通过函数调用从被调用的函数中得到多个值

【C++】用指针做函数参数相关推荐

  1. C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态

    1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针 ...

  2. 用指针做函数参数自己编程实现字符串连接函数strcat()的功能。CQUPT题库

    用指针做函数参数自己编程实现字符串连接函数strcat()的功能.CQUPT题库 下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误. 注意:请将修改正确后的完整源程序拷贝粘贴 ...

  3. C语言 函数指针做函数参数(即回调函数)

    文章目录 函数指针做函数参数(回调函数) 回调函数概念 一般有三种调用方式 回调函数的作用 回调函数调用时刻 回调函数的语法: 1.简单的函数类型为:无参数.无返回值的函数. 2.完全形式的回调函数 ...

  4. 函数指针做函数参数 使用总结及其意义

    目录 1.函数指针 2.函数指针做函数参数 3.函数指针做函数参数在实际项目中的运用. 第一种 正向调用 第一步 Load DLL 第二步 声明函数指针类型 第三步 实现函数的调用. 完整代码如下: ...

  5. C语言中的void和void指针-void*,及void指针做函数参数。

    实例: #include <stdio.h> #include <stdlib.h> void print(void * node) {     printf("%d ...

  6. C语言,字符串指针做函数参数

    看一下下面这段代码有什么问题? #include "stdio.h" //#include "stdbool.h" #include "string. ...

  7. c语言 结构体指针做函数参数

    demo:修改某个学生的成绩 不利用指针直接在主函数内修改学生成绩的代码: #include <stdio.h> #include <string.h> #define N 5 ...

  8. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  9. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

最新文章

  1. 如何理解高光谱图像数据
  2. Zuhair and Strings
  3. shell学习(12)- jq
  4. 再说WCF Data Contract KnownTypeAttribute
  5. MyBatisPlus_查询分页篇_入门试炼_02
  6. html多个单元格合并单元格内容,excel怎样快速把多个单元格内容合并 合并多个单元格内容的设置方法...
  7. java mysql 分页计算公式_关于Java的分页算法,急!
  8. 【渝粤教育】国家开放大学2018年秋季 2312T旅行社经营管理 参考试题
  9. 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
  10. python怎么在gui中显示图片_Python 3-如何从Web检索图像并使用TKINTER在GUI中显示?...
  11. 如何为约束更改设置动画?
  12. 程学旗 计算机,专家人才库数据----中国科学院计算技术研究所
  13. 猫狗大战-caffe模型训练实例amp;NSDK识别运行
  14. 遗传算法pid matlab程序解释,关于遗传算法的pid整定问题
  15. 矩阵分解(三)——满秩分解
  16. 【平衡二叉樹】超市促銷
  17. 算法提高 解二元一次方程组
  18. PHP分布式路由算法介绍与实现
  19. 最最最详细的springboot项目中集成微信扫码登入功能.步骤代码超级详细(OAuth2)
  20. 基于Photoshop CC2018讲解PS最新入门到精通

热门文章

  1. JavaScript面向对象怎样删除标签页?
  2. 腾讯全力支持鸿蒙,腾讯宣布大力发展车联网,或与华为鸿蒙强强联合!
  3. AGC002[BCDEF]题解
  4. iOS-UIWebView添加头部和尾部
  5. Red Hat 5.8 CentOS 6.5 共用 输入法
  6. 数据结构实验之链表一:顺序建立链表
  7. 天猫双十一神话恐终结
  8. tar自动打包指定文件夹中的文件到指定目录
  9. linux中普通文件和块设备文件的区别
  10. 轻松掌控全链路服务监控:方案概述与对比 | 真的很干!