以下是初始化字符數組的方法有兩種:用C初始化一個char數組哪種方式更好?
char charArray1[] = "foo";
char charArray2[] = {'f','o','o','\0'};
如果兩個是等價的,人們期待大家使用上面的第一個選項(因爲它需要較少的擊鍵)。但是我看過代碼,作者總是使用第二種方法。
我的猜測是,在第一種情況下,字符串「foo」存儲在數據段中並在運行時拷貝到數組中,而在第二種情況下,字符存儲在代碼段中並複製到數組中運行。出於某種原因,作者對數據段中的任何內容過敏。
編輯:假定數組聲明爲函數本地。
問題:我的推理是否正確?你喜歡哪種風格?爲什麼?
第一種風格 - 絕對。更清晰,更簡潔。與可讀性好處相比,1和2之間的perf影響可忽略不計。 – obelix 2010-08-15 11:35:18
相關:http://stackoverflow.com/questions/3427750/difference-between-array-initializations和http://stackoverflow.com/questions/3429071/string-initializer-and-read-only-section – 2010-08-15 11:37:23
@Prasoon謝謝爲鏈接。我發佈前搜索和搜索,但沒有找到它。編譯器「不支持第一種方法」的 – 2010-08-15 11:46:51