C语言中的括号char数组初始化

时间:2014-03-04 02:29:54

标签: c string char

现在我遇到了如下问题:

int foo(void){
    char a[10] = "foo";
    char b[10] = {"foo"};
    ...
}

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

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

2 个答案:

答案 0 :(得分:6)

他们是一样的:

  

C11§6.7.9初始化

     

字符数组的数组可以用字符串文字或UTF-8字符串文字初始化,可选择用大括号括起来。字符串文字的连续字节(如果有的话,包括终止空字符)空间或如果数组的大小未知)初始化数组的元素。

答案 1 :(得分:-1)

它们包含相同的值,但指向不同的地址。试一试:

值:

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

指针:

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