首先更新一点关于常量变量的存储位置
全局区: 全局变量 函数体之外的变量
静态变量 static修饰的变量
字符串常量 “godv”
const修饰的全局变量 (全局常量)
局部变量的声明周期在栈中 不允许返回栈中的地址
#include <iostream>
using namespace std;
int* run()
{
int a = 100;
return &a;
}
int main()
{
int * p = run();
cout << *p << endl; //编译器保留了一次
cout << *p << endl; //本次出问题
system("pause");
return 0;
}
利用new关键字在堆中开辟空间
#include <iostream>
using namespace std;
int* run()
{
int a = 100;
int* a1 = new int(100);
return a1;
}
int main()
{
int * p = run();
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
system("pause");
return 0;
}
new关键字的用法以及delete的用法
#include <iostream>
using namespace std;
int* run()
{
int a = 100;
int* a1 = new int(100);
return a1;
}
int* run2()
{
int* p = new int[10];
return p;
}
int main()
{
int * p = run();
cout << *p << endl;
delete p; //delete 关键字后面跟指针
//cout << *p << endl;//报错已经释放
int* p2 = run2();
for (int i = 0; i < 10; i++)
{
p2[i] = 100 + i;
}
for (int i = 0; i < 10; i++)
{
cout << p2[i] << endl;
}
delete[] p2; //数组需要使用 delete[] 释放
system("pause");
return 0;
}