在C / C ++中,以下两行代码之间的区别是什么:
char *str1="hello";
char *str2={"hello"};
答案 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)
数组和“字符串”之间没有区别,因为字符串是一个字符数组。