你好,请问这个程序出问题的原因是什么
尝试了一下直接返回(a+b)的地址,但是却失败了,可以指点我这是什么原因吗?谢谢
#include<iostream>
using namespace std;
//定义求和指针函数
int* add(int a,int b);
int main()
{
//定义变量
int i,j;
cin>>i>>j;
cout<<"指针函数返回的地址指向的内存数据为:"<<*(add(i,j))<<endl;
//调用求和函数,输出两个变量和
return 0;
}
int* add(int a,int b)
{
return &(a+b);
}
16
收起
正在回答
1回答
你好,add函数中并没有将a+b的值存放到某一个空间里,因此这里的&符号其实是找不到地址的,系统报错。修改成下面的代码就不会报error错误了:
int* add(int a,int b)
{
int sum = a+b;
return ∑
}
但是不建议同学这么用,这样会报一个warning错误,因为sum是函数内部定义的一个变量,这个空间是暂时的,在有些涉及到自动释放内存空间的系统中当函数执行完毕或者代码执行结束后,该变量空间会被释放。
如果解决了你的问题,请采纳,祝学习愉快~
C++零基础入门 热门编程语言 二级考试必备
- 参与学习 529 人
- 提交作业 110 份
- 解答问题 594 个
无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星