C语言char数组字符串时,为啥在用输出printf时,数组前不加间接寻址符号*?

在你的描述里边 a 是一个 char* 数组。然后 a 其实是等价于 *(a + n -1),也就是说,此时的 a 的类型是 char* 。如果你在加上一个 * 那么 *a 的类型就是 char 了。也就是说,你读到了 a 处的字符串的第一个字符。*a 等价于 *(a + 0) 等价于 a。
■网友
你的描述中,a是一个指针,指向一个字符串常量,因此a在内存中的值是那个字符串的首元素地址。于是*a是字符串首元素,一个char类型。 而与类型说明符%s相匹配的后续参数中的值应该是一个地址,从那个地址开始,按照存储的数值转换成ASCII码输出字符,直到遇到一个字节中存储\\0。
■网友
以题主目前的水平应该可以理解下面的代码char *a0, *a1;a0 = "ye";a1= "er";那么题主自己的这种写法为什么就不能理解了呢char *a = {"yi", "er"};a0和a在printf里的用法是相同的


    推荐阅读