[英]The brace in C language char array initialization
現在我遇到了如下問題:
int foo(void){
char a[10] = "foo";
char b[10] = {"foo"};
...
}
我用gdb檢查了'a'和'b'的內容,它們看起來完全一樣。
變量a和b有什么區別嗎?
他們是一樣的:
C11§6.7.9初始化
字符類型的數組可以由字符串文字或UTF-8字符串文字初始化,並可選地用大括號括起來。 字符串文字的連續字節(如果有空間或數組大小未知,則包括終止空字符)將初始化數組的元素。
它們包含相同的值,但指向不同的地址。 試一下:
值:
(strcmp(a,b)==0) ? cout << "Same" : cout << "Diff";
指針:
(a==b) ? cout << "Same" : cout << "Diff";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.