假设 C 字符串是一个以 null 结尾的字符数组:
const char str1[] = {"abc"};
const char str2[] = {'a', 'b', 'c', '\0'};
const char str3[] = {97, 98, 99, '\0'};
是相同的。
那么为什么可以生成这样的字符串数组:
const char * str_arr[] = {"abc", "ABCD"};
const char * str_arr[] = { str1, str2, str3 };
但不是这样的?:
const char * str_arr[] = { {'a', 'b', 'c', '\0'}, {'A', 'B', 'C', 'D', '\0'} };
fatal error: excess elements in scalar initializer