C数组初始化大小(字节)

eat*_*mon 0 c bytearray multidimensional-array

我期望下面的数组初始化的大小为32. 1字节字符,列表中的每个项目为2个字节,16个项目.... = 32.但是它是128个字节.为什么?

char* cmds[] = {"AQ", "BD", "LS", "TW", "AS", "CP", "TR", "CO", "BF", "MS", "SR", "TL", "WT", "PM", "TE", "TC"};
printf("%li\n", sizeof(cmds));
//result is 128
//size of list is 16
//8 bytes per item in the list
//why?
Run Code Online (Sandbox Code Playgroud)

Mic*_*ael 8

那是因为你有一个指针数组char.每个指针都是8字节(在x64上),所以16个指针x 8个字节= 128个字节.