char* 和 char[]区别

1.char* 和 char[]分配空间位置的区别

在不new的情况下,使用char* 和 char[]=一个字符串,分配的空间会有区别,char*在常量区,char[]在栈上。

#include <iostream>
#include <string>

const char* returnstring() {
 // return "test1"; // 情况1,可正常返回
    const char* str1 = "test2"; // 情况2,可正常返回
 // return str1;
    const char str2[] = "test3"; // 情况3,不可正常返回
    return str2;
}

int main()
{
    const char* test= returnstring();
    std::cout << test << std::endl;
}

情况1和情况2,空间再常量区上,情况3,空间在栈上,返回后被释放。

2.型别推导的区别

见effective modern c++

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部