#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; }
开辟空间后,其中系统会默认存入数据。