鱼C论坛

 找回密码
 立即注册
查看: 2257|回复: 4

[技术交流] char c="abcd"的“”

[复制链接]
发表于 2020-9-14 22:24:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char c="abcd"的“”其中一个作用是返回abcd的地址给c 并不是将abcd赋值给c那为什么在printf(“%s”,c)中能直接打印出abcd 不用给c加上取值符号 即printf("%s",*c)呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-14 22:24:46 | 显示全部楼层
sorry是char c[]="abcd"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-15 09:10:33 | 显示全部楼层
因为c[]是一个数组,数组名就是代表了这个数组的首地址,所以说其实c就是一个地址,不用再加*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-15 09:13:24 | 显示全部楼层
char c[]="abcd"  
  编辑器会自动在末尾加'\0'结束符  c[5] = {'a','b','c','d','\0'}

printf("%s",c)
%s 输出一个字符串 ,会在 数组的首地址 开始自动搜索结束符 '\0',结果是  将结束符之前的所有的元素以字符串形式打印出来

char c[] 是一个数组,基于数组的特性,数组名即是这个数组的首地址


以上为个人理解,仅供参考
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-15 11:41:27 | 显示全部楼层
你提的这个问题正好是我前几天的疑惑,看看这个就明白了

c实际上没有string类型。那么c的%s怎么来的呢?用char数组代替。那么%s如何工作?它会从所给指针指向的位置开始,逐字符的打印输出,直到遇到“/n”或者“/0”。所以%s需要的只是一个指针值。(或者说数组第一个值的内存地址)读取了第一个值后,它会跳到后面的位置继续读取,这建立在你传给它的值是指针的前提上。如果你用了*,结果只得到了第一个字符而没有指针(*表示取出指针所指位置保存的值),程序不知道后续字符的储存位置,它去哪里找?再说%d,%d只打印一个十进制数值,不需要后续继续打印,所以直接给它这个数值就行了。(*是什么意思不需要我再说一遍了吧?)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表