7 C++指针做函数返回值
在C++中,函数的返回值出来可以是普通的数据类型,还可以是指针类型,我们将函数的返回值定义为指针类,用来返回一个变量的地址,但我们不能返回局部变量的地址。
用指针作为函数返回值时,需要注意的一点是,函数运行结束后会销毁内部定义的所有局部数据,包括局部变量,局部数组,形参,函数返回的指针尽量不要指向这些数据。
语法如下:
type* funname()
{return val;
}
我们定义了一个funname函数,其返回值为type类型的指针;
#include <iostream>
using namespace std;
int*maxval(int*a, int*b)
{if (*a > *b){return a;}else{return b;}}
int main()
{int a = 4, b = 5;int *c=NULL;c = maxval(&a, &b);cout << "c的字面值:" << *c << endl;cout << "c地址:" << c << endl;
}
试着返回局部变量,看看发生什么情况
#include <iostream>
using namespace std;
int *arrSize()
{int size = 100;return &size;
}
int main()
{int *pSize = arrSize();cout << "pSzie = " << *pSize << endl;return 0;
}
我们在arrSize函数里面返回了局部变量size的地址,再次运行程序,貌似没有问题,现在我们修改程序如下:
这次,我们在打印之前增加了一个cout函数的调用,次数在运行该程序,我们可以看到这次输出了0,发生了错误,因此我们在程序中,坚决不要放局部变量的地址。
7 C++指针做函数返回值相关推荐
- 使用指针做函数返回值
使用指针做函数返回值 1.当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72.此时需要我们注意的是该地址值所指向的空间是否存在( ...
- C指针7:指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...
- C语言指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...
- C语言灵魂篇|指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include #includechar *s ...
- c语言函数返回值可以是字符串吗,函数返回值可以是字符串吗
c语言中函数返回值可以是数组.字符串和结构体吗? 因为在C语言中函数不能返回数组,但字符串是存储在字符数组中的,所以能C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式 ...
- 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...
- c语言指针,return以及函数返回值
指针作为c语言的精华所在所以会多学习几天来扎实的掌握 void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容 ...
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...
最新文章
- 第十六届全国大学生智能车各分赛区所需要的比赛系统器材
- 无线网卡服务端工具airserv-ng
- [SimplePlayer] 4. 从视频文件中提取音频
- 045魔法方法:属性访问
- 15.5 匿名内部类
- go benchmark 性能测试 单元测试 基准测试 使用方法详解
- Zookeeper实践与应用--分布式锁实现
- 【java机器学习】词向量在贝叶斯中的概念
- 使你的MFC程序具有win7的透明立体风格
- 记一次简单的破解程序(逆向)
- [分组背包]Luogu1064 金明的预算方案
- FFmpeg —— MP4文件提取h264文件
- ajax方法(菜鸟教程)
- PS魔棒工具提示不能完成请求,因为程序错误和不能完成请求,因为没有足够内存以及内存不能为read的处理
- 华为或者荣耀手机使用谷歌有Google弹窗该怎么办?
- 图片裁剪,合成(设置透明背景)
- 图像灰度共生矩阵cooc_feature_image.hdev
- app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测-虾分发
- 网站被流量攻击怎么处理
- RHEL 8.2 镜像
热门文章
- java学生签到系统视频教程_Java web学生信息、选课、签到考勤、成绩管理系统附带完整源码及视频开发教程...
- 为什么人工智能开发首选python语言?(附Python学习线路图)
- 铁道警察学院 计算机,铁警emoji,看看你的校园生活
- 打造多元民族盛典 南亚风情第壹城非遗文化节等你来体验
- python爬取视频
- js生成字母和数字随机数
- 这个会自己行走的机器人行李箱,根本就是辆小型“特斯拉无人汽车” | 钛空舱
- 苹果刘海高度_苹果如何将针对性广告的战争推向新的高度
- 在iTunes中安装ipad应用程序图文详细步骤
- vant改定制颜色 修改tab标签和滚动条颜色