char* str,char str[] ,string 异同

Matrix4X4 发布于 2012/04/13 14:10
阅读 830
收藏 3

在一个函数内,char* str="where",char str[5]="where",string str="where",他们各自的内存位置,用sizeof,strlen计算的大小各是多少。

加载中
0
jimmy210
jimmy210
char* str="where"; //指针保存在栈上。指针指向的内容在静态存储区
                   //sizeof(str)=4;strlen(str)=5;
char str[5]="where"; 指针保存在站上。指针指向的内容也在栈上
                    //sizeof(str)=5;strlen(str)=5;
string str="where"; string是类似于数组的实现。 指针和内容都在栈上
                    //sizeof(str)=不确定;strlen(str)=5;
                    //string类会先初始化一块足够大的内存。当然都是在栈上。


Matrix4X4
Matrix4X4
还有一个问题是char*怎么会被暗干成const不可修改!
Matrix4X4
Matrix4X4
我纠正下我的问题char[6]="where"; 还有一个疑问是strlen只接受const char* 形参,这个有试过么?
0
中山野鬼
中山野鬼
楼主,我的建议,C++就用C++,除非实在没有办法,才用C的东西。你前面两个都是C的。并不是 str被变成了CONST,而是你后面是个常量。而这个常量没有实际制定的存储空间,和第二个不一样。
0
jimmy210
jimmy210

引用来自“中山野鬼”的答案

楼主,我的建议,C++就用C++,除非实在没有办法,才用C的东西。你前面两个都是C的。并不是 str被变成了CONST,而是你后面是个常量。而这个常量没有实际制定的存储空间,和第二个不一样。
老鬼说的对。本质上就是const。
返回顶部
顶部