鱼C论坛

 找回密码
 立即注册
查看: 234|回复: 6

c语言字符串

[复制链接]
发表于 2024-3-13 11:06:25 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
为什么不是101各占一个字符 然后结尾还有一个\0一个字节 我觉得是4个字节
IMG_0966.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-13 11:06:48 | 显示全部楼层
在C语言中,字符串是由字符组成的数组,以'\0'(空字符)作为结束标志。每个字符占用一个字节的存储空间。

例如,字符串 "101" 实际上占据了四个字节的存储空间,分别是 '1'、'0'、'1' 和 '\0'。这是因为C语言中的字符串会自动在末尾添加一个空字符,用于表示字符串的结束。

所以,在使用字符串时,需要给字符串指定足够的存储空间,以便容纳字符串中的所有字符及结尾的空字符。一般情况下,为了储存字符串 "101",我们至少需要声明一个长度为4的字符数组,如下所示:

  1. char str[4] = "101";  // 字符数组的大小要比字符串的长度多1,用来存储末尾的空字符
复制代码


注意,如果你想在声明字符数组时省略长度信息,编译器会根据初始化赋值的内容自动确定字符数组的长度,如下所示:

  1. char str[] = "101";  // 编译器会根据字符串的长度自动确定字符数组的大小为4(包括空字符)
复制代码


如果你对字符串的长度和内存空间分配还有疑问,请随时追问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-13 11:09:40 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-3-13 11:06
在C语言中,字符串是由字符组成的数组,以'\0'(空字符)作为结束标志。每个字符占用一个字节的存储空间。
...

有些答非所问了 请问char c=‘\101’ c占几个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-13 11:09:57 | 显示全部楼层
疯狂的小熊 发表于 2024-03-13 11:09
有些答非所问了 请问char c=‘\101’ c占几个字节


对不起,回答有些偏离了问题。在C语言中,字符类型char默认是占用一个字节(8位)的空间。当你声明一个字符变量时,例如char c = '\101';,这里的'\101'是一个八进制转义序列,表示字符'A'的八进制ASCII码值。

因此,字符变量c占用一个字节的内存空间,用来存储字符'A'的ASCII码值。在内存中,c的值是65(十进制)或者0x41(十六进制)。请注意,字符变量在内存中实际上存储的是其对应的ASCII码值,而不是字符本身。

希望这次回答能够解决你的疑问,如果还有其他问题,请继续提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-3-13 12:24:29 | 显示全部楼层
本帖最后由 jackz007 于 2024-3-13 16:13 编辑
  1. char c = '\101' ;
复制代码

        这样定义出来的变量 c ,无论怎样给它赋值,也无论赋怎样的数值,它占用的一定是一个字节,和
  1. int c = 65535 ;
复制代码

        一定占用 4 个字节是同样的道理。
        char c = '\101' 中的 '\101' 是在用一个八进制数 101 表达一个 ASCII 字符,八进制的 101 就是十进制的 65, 所以,
  1. char c = '\101' ;
复制代码

        和
  1. char c = 65 ;
复制代码

        和
  1. char c = 'A' ;
复制代码

        没有任何的区别。
        char 不等于字符串,没有末尾的那个 '\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-13 18:06:32 | 显示全部楼层
在C语言中,无论是普通字符还是通过转义序列定义的字符,char 类型的变量都占用1个字节的内存空间。

所以,即使是 char c = '\101'; 这样的声明,变量 c 也仅占用1个字节。这是因为 \101 是一个八进制转义序列,代表ASCII码表中的字符,这里它等同于字符 'A'。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-13 20:26:37 | 显示全部楼层
jackz007 发表于 2024-3-13 12:24
这样定义出来的变量 c ,无论怎样给它赋值,也无论赋怎样的数值,它占用的一定是一个字节,和

...

谢谢,我明白了,感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 01:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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