入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

函数返回指针|函数返回地址

创建时间:2015-05-12 投稿人: 浏览次数:1004
函数返回局部自动变量的地址是严重的错误。
但是我们可以返回动态分配的内存的地址,因为使用操作符new分配的动态内存一直存在,
直到被delete销毁或者程序结束,不受函数作用域的影响。

#include <iostream>
using namespace std;

double* treble(double);
char* fun1();
char* fun2();

int main(){
	double* ptr(nullptr);
	ptr = treble(5.0);
	cout << "Result = " << *ptr << endl;
	delete ptr;	//释放为result动态分配的内存
	ptr = 0;

	cout << "_fun1() = " << fun1() << endl;
	cout << "_fun2() = " << fun2() << endl;
	
	system("pause");
	return 0;
}

double* treble(double data){
	double* result = new double(0.0);
//	double* result(nullptr); //错误
	double num = 4;
	result = #
	*result = 3.0 * data;
	return result;
}
char* fun1(){
	char* str = "12345";
	cout << " fun1() = " << str << endl;
	return str;
}
char* fun2(){
	char str[] = "12345";
	cout << " fun2() = " << str << endl;
	return str;
}
    函数fun1()中常量字符串"12345"的地址赋给str,因此str的值是字符串的地址。
而str是局部变量,函数返回值时,变量str被破坏,但是常量字符串并没有被破坏,
因此根据返回的地址可以找到字符串。
    函数fun2()中常量字符串"12345"赋给了数组str,str的值是数组str的地址。
而str是局部变量,函数返回值时,变量str被破坏,因此根据返回的地址得不到结果。



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。