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里的用法是相同的
推荐阅读
- OC为何跌出语言榜前十
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 人民车市|新语言、新起点,捷达VS7 强势入局
- C语言 指针引用数组的地址问题
- 零基础入门学习啥语言好
- 营销型外贸网站用哪种建站程序和语言比较好呢主要是适合优化,可扩展兼容性,安全性,后期网站扩展升级
- 有哪些轻易就被识别的淘宝刷单评论语言
- C语言指数函数代码
- 我现在在学c语言,然后以后的工作目标是腾讯网易这些游戏公司,我是通信专业,请问我接下来再该学些啥呢
- 编程语言学完之后学习啥才能做出程序?
