char str[3][32] = {"to be or not to be", "is the", "question!!!"}这个数组有三个字符串 编译的时候 是每个字符串后面有'\0' 还是只有最后一个“question\0”
双引号括起的一串字符就是一个 “字符串常量”,它的结尾处就隐含了字符串结束符 '\0' 所以你3个 “字符串常量”,各有一个 '\0', 就共有3个。每个 字符串常量 的长度 都在 [32] 范围以内,所以 char str[3][32] 搁得下它们。
c语言约定:字符串用"括起来,由编译程序自动在双引号括起来的字符最后添加一个0,如"is the"实际上需要占用的字符数为7个。相当于你写{ 'i','s',' ','t','h','e',0 },就是因为这样写字符串既不好读又麻烦所以才引入用双引号形式写的格式。