指针与数组的区别,以及指针的空间开辟问题
#include <iostream>
using namespace std;
int main()
{
char* p = "wanglibao";
char* a = new char[10];
// p[0] = 'e';
a[0] = 'e';
cout << *a << endl;
return 0;
}
数组开辟空间只能在栈或者静态空间(全局的),而指针则可以任意开辟,可以在堆栈静态都行。
像上边代码中,指针p指向一个栈中的字面值常量。a指向一个堆中的空间,所以可以用a[0]来直接操作该数,也可以用指针来操作。*a 输出的是第一个字节的内容。
但p[0] 在编译时不会有问题,运行时会出错。
#include <iostream>
using namespace std;
int main()
{
char* p = "wanglibao";
char* a = new char[10];
// p[0] = 'e';
a[0] = 'e';
a[2] = 'd';
cout << *(a+1) << endl;
return 0;
}
开辟空间后,其中系统会默认存入数据。

浙公网安备 33010602011771号