现在我遇到了如下问题:
int foo(void){
char a[10] = "foo";
char b[10] = {"foo"};
...
}
我使用gdb来检查'a'和'b'的内容,它们看起来完全一样。
变量a和b之间有什么区别吗?
答案 0 :(得分:6)
他们是一样的:
C11§6.7.9初始化
字符数组的数组可以用字符串文字或UTF-8字符串文字初始化,可选择用大括号括起来。字符串文字的连续字节(如果有的话,包括终止空字符)空间或如果数组的大小未知)初始化数组的元素。
答案 1 :(得分:-1)
它们包含相同的值,但指向不同的地址。试一试:
值:
(strcmp(a,b)==0) ? cout << "Same" : cout << "Diff";
指针:
(a==b) ? cout << "Same" : cout << "Diff";