在 C/C++ 中,以下两行代码有什么区别:
char *str1="hello";
char *str2={"hello"};
根据 2011 C 标准,第 6.7.9 节初始化,第 11 段:“标量的初始化程序应为单个表达式,可选用大括号括起来……”</p>
这就对了。没有语义差异;大括号可能存在也可能不存在,但含义没有变化。
仅在这种情况下样式。他们都导致同样的事情,他们都是坏的形式。你应该用过const char * str1="hello";
.
请参阅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();
}
数组和“字符串”没有区别,因为字符串是字符数组。