C++ 指针进阶:返回值、const 限定与通用指针类型
1. 函数返回指针
函数可以通过返回语句返回指向数据的指针。但在通过函数的返回语句返回指针时,要确保指针所指向的内存,在函数调用完成后仍然存在。不要返回指向函数局部栈内存的指针,即不要返回指向函数内栈上定义的局部变量的指针。不过,返回指向函数内使用 new() 分配的内存的指针是可以接受的,因为分配的内存将位于堆上,在函数调用结束后仍然存在。
下面是一个示例代码:
#include <iostream>
#include <iomanip>
using std::cin;
using std::cout;
using std::endl;
using std::flush;
using std::setw;
constexpr int MAX = 20;
[[nodiscard]] char *createName(); // 函数原型
int main()
{
char *name = nullptr; // 指针声明并初始化
name = createName(); // 函数将分配内存
cout << "Name: " << name << endl;
delete [] name; // 删除分配的内存(在不同的作用域中)
return 0; // 这可能容易出错!
}
[[nodiscard]] char *createName()
{
char *temp = new char[MAX];
cou
超级会员免费看
订阅专栏 解锁全文
75

被折叠的 条评论
为什么被折叠?



