在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. 使用指针做函数返回值

    使用指针做函数返回值 1.当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72.此时需要我们注意的是该地址值所指向的空间是否存在( ...

  2. C指针7:指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...

  3. C语言指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...

  4. C语言灵魂篇|指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include #includechar *s ...

  5. c语言函数返回值可以是字符串吗,函数返回值可以是字符串吗

    c语言中函数返回值可以是数组.字符串和结构体吗? 因为在C语言中函数不能返回数组,但字符串是存储在字符数组中的,所以能C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式 ...

  6. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  7. c语言指针,return以及函数返回值

    指针作为c语言的精华所在所以会多学习几天来扎实的掌握 void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容 ...

  8. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...

  9. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

最新文章

  1. 第十六届全国大学生智能车各分赛区所需要的比赛系统器材
  2. 无线网卡服务端工具airserv-ng
  3. [SimplePlayer] 4. 从视频文件中提取音频
  4. 045魔法方法:属性访问
  5. 15.5 匿名内部类
  6. go benchmark 性能测试 单元测试 基准测试 使用方法详解
  7. Zookeeper实践与应用--分布式锁实现
  8. 【java机器学习】词向量在贝叶斯中的概念
  9. 使你的MFC程序具有win7的透明立体风格
  10. 记一次简单的破解程序(逆向)
  11. [分组背包]Luogu1064 金明的预算方案
  12. FFmpeg —— MP4文件提取h264文件
  13. ajax方法(菜鸟教程)
  14. PS魔棒工具提示不能完成请求,因为程序错误和不能完成请求,因为没有足够内存以及内存不能为read的处理
  15. 华为或者荣耀手机使用谷歌有Google弹窗该怎么办?
  16. 图片裁剪,合成(设置透明背景)
  17. 图像灰度共生矩阵cooc_feature_image.hdev
  18. app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测-虾分发
  19. 网站被流量攻击怎么处理
  20. RHEL 8.2 镜像

热门文章

  1. java学生签到系统视频教程_Java web学生信息、选课、签到考勤、成绩管理系统附带完整源码及视频开发教程...
  2. 为什么人工智能开发首选python语言?(附Python学习线路图)
  3. 铁道警察学院 计算机,铁警emoji,看看你的校园生活
  4. 打造多元民族盛典 南亚风情第壹城非遗文化节等你来体验
  5. python爬取视频
  6. js生成字母和数字随机数
  7. 这个会自己行走的机器人行李箱,根本就是辆小型“特斯拉无人汽车” | 钛空舱
  8. 苹果刘海高度_苹果如何将针对性广告的战争推向新的高度
  9. 在iTunes中安装ipad应用程序图文详细步骤
  10. vant改定制颜色 修改tab标签和滚动条颜色