“hello”和{“hello”}有什么区别?

时间:2012-10-05 12:55:59

标签: c++ c pointers initialization

在C / C ++中,以下两行代码之间的区别是什么:

char *str1="hello";  
char *str2={"hello"};  

4 个答案:

答案 0 :(得分:10)

根据2011 C标准,第6.7.9条初始化,第11段:“标量的初始化程序应为单个表达式,可选择用括号括起来......”

就是这样。没有语义差异;大括号可能只是存在或可能不存在,而且意义没有变化。

答案 1 :(得分:6)

仅在这种情况下使用样式。它们都会导致同样的事情,而且它们都是糟糕的形式。您应该使用const char * str1="hello";

答案 2 :(得分:2)

请参阅https://stackoverflow.com/a/3462768/153225

大括号是多余的。

使用“gcc -S”从以下代码生成汇编程序,确认它们生成的内容完全相同(每种情况下的常量略有不同):

#include <iostream>
using namespace std;

void test1() {
    const char *str1="hello1";
    cout << str1 << endl;
}

void test2() {
    const char *str2={"hello2"};
    cout << str2 << endl;
}

int main() {
    test1();
    test2();
}

答案 3 :(得分:-1)

数组和“字符串”之间没有区别,因为字符串是一个字符数组。

相关问题