#include<iostream>
using namespace std;
int main()
{
int a[5] = { 1,2,3,4 };
int* e;
*e = a[1];
cout << e << " " << *e<<" " << endl;
return 0;
}
为什么*e = a[1];显示错误?
#include<iostream>
using namespace std;
int main()
{
int a[5] = { 1,2,3,4 };
int* e;
*e = a[1];
cout << e << " " << *e<<" " << endl;
return 0;
}
为什么*e = a[1];显示错误?
e 只是一个指针变量,*e 等同于该地址指向的变量。问题是:e 并没有指向有效的地址,所以将 a[1] 储存到该地址的时候会报错。
让该地址有效的方法之一,是分配一个新的空间,让指针指向这个空间。注意,该空间不用的时候需要主动删掉。代码如下:
#include<iostream>
using namespace std;
int main()
{
int a[5] = { 1,2,3,4 };
int* e;
e = new int; // 分配新内存
*e = a[1];
cout << e << " " << *e<<" " << endl;
delete e; // 删除分配的内存
return 0;
}