簡體   English   中英

C語言中的花括號char數組初始化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM