【C++】用指针做函数参数
此篇博客程序运行环境为: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++】用指针做函数参数相关推荐
- C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态
1,数组指针语法梳理 回顾,如何定义数组数据类型: 回顾,如何定义指针类型数组: 回顾,如何直接定义 一个指向数组类型的指针: 2,函数指针语法梳理 1)如何定义一个函数类型 2)如何定义一个函数指针 ...
- 用指针做函数参数自己编程实现字符串连接函数strcat()的功能。CQUPT题库
用指针做函数参数自己编程实现字符串连接函数strcat()的功能.CQUPT题库 下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误. 注意:请将修改正确后的完整源程序拷贝粘贴 ...
- C语言 函数指针做函数参数(即回调函数)
文章目录 函数指针做函数参数(回调函数) 回调函数概念 一般有三种调用方式 回调函数的作用 回调函数调用时刻 回调函数的语法: 1.简单的函数类型为:无参数.无返回值的函数. 2.完全形式的回调函数 ...
- 函数指针做函数参数 使用总结及其意义
目录 1.函数指针 2.函数指针做函数参数 3.函数指针做函数参数在实际项目中的运用. 第一种 正向调用 第一步 Load DLL 第二步 声明函数指针类型 第三步 实现函数的调用. 完整代码如下: ...
- C语言中的void和void指针-void*,及void指针做函数参数。
实例: #include <stdio.h> #include <stdlib.h> void print(void * node) { printf("%d ...
- C语言,字符串指针做函数参数
看一下下面这段代码有什么问题? #include "stdio.h" //#include "stdbool.h" #include "string. ...
- c语言 结构体指针做函数参数
demo:修改某个学生的成绩 不利用指针直接在主函数内修改学生成绩的代码: #include <stdio.h> #include <string.h> #define N 5 ...
- c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const
十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...
- C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例
C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...
最新文章
- 如何理解高光谱图像数据
- Zuhair and Strings
- shell学习(12)- jq
- 再说WCF Data Contract KnownTypeAttribute
- MyBatisPlus_查询分页篇_入门试炼_02
- html多个单元格合并单元格内容,excel怎样快速把多个单元格内容合并 合并多个单元格内容的设置方法...
- java mysql 分页计算公式_关于Java的分页算法,急!
- 【渝粤教育】国家开放大学2018年秋季 2312T旅行社经营管理 参考试题
- 卷积神经网络 第三周作业 Keras+-+Tutorial+-+Happy+House+v1
- python怎么在gui中显示图片_Python 3-如何从Web检索图像并使用TKINTER在GUI中显示?...
- 如何为约束更改设置动画?
- 程学旗 计算机,专家人才库数据----中国科学院计算技术研究所
- 猫狗大战-caffe模型训练实例amp;NSDK识别运行
- 遗传算法pid matlab程序解释,关于遗传算法的pid整定问题
- 矩阵分解(三)——满秩分解
- 【平衡二叉樹】超市促銷
- 算法提高 解二元一次方程组
- PHP分布式路由算法介绍与实现
- 最最最详细的springboot项目中集成微信扫码登入功能.步骤代码超级详细(OAuth2)
- 基于Photoshop CC2018讲解PS最新入门到精通