C语言中字符数组初始化中的大括号

6
现在我遇到了以下问题:
int foo(void){
    char a[10] = "foo";
    char b[10] = {"foo"};
    ...
}

我使用gdb来检查'a'和'b'的内容,它们看起来完全相同。

变量a和变量b之间有区别吗?


3
没有差别。 - BLUEPIXY
就像 int i = 10;int i = { 10 }; 之间没有区别一样。 - Barmar
2个回答

6

它们是相同的:

C11 §6.7.9 初始化

字符类型的数组可以通过字符字符串字面值或UTF-8字符串字面值进行初始化,可选地用大括号括起来。 字符串字面值的连续字节(包括终止空字符,如果有空间或数组大小未知)初始化数组的元素。


-1
它们包含相同的值,但指向不同的地址。试一试:
值:
(strcmp(a,b)==0) ? cout << "Same" : cout << "Diff";

指针:

(a==b) ? cout << "Same" : cout << "Diff";

你的意思是这些变量包含相同的值但实际上它们是不同的变量。就像 int x = 10; int y = 10; 一样。 - M.M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接