char*p="IAMASTUDENT";p[3]=0;std::cout
2 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
在回答之前,先给楼主提个意见:既然是C++问题,那就应该尽量使用STL,如string,vector。首先要知道C++使用四种不同的方案来存储数据(它们的区别在于数据保留在内存中的时间):自动存储:在函数定义中声明的变量(包括函数参数)为自动存储的。静态存储:在函数定义外定义的变量和使用关键字static定义的变量为静态存储的。线程存储(C++11)动态存储:运行时用new运算符分配的内存,一直存在,直到delete运算符将其释放或程序结束为止,有时也被称为自由存储或堆。定义指针char*p="IAMASTUDENT"时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在定义时同时赋给指针一个字符串常量进行初始化。这里的字符串常量是静态存储的,而且被定义为只读。如果试图通过指针修改这个字符串常量的值,程序就会出现undefinedbehavior。所以,这里初始化指针时最好用const标记该指针指向的字符串为常量。另外一个需要注意的是,定义数组charp[]="IAMASTUDENT"时,数组p的内容是自动存储的。
添加回答
举报
0/150
提交
取消