字符串所占内存字节

有几道题问字符串所占字节数“ab\t\\029"内存中我觉得是占8个字节,但是答案是7,不知道为什么”\n\179\t\\123"又是占几个字节,都搞糊涂了,我知道字符串... 有几道题问字符串所占字节数
“ab\t\\029" 内存中我觉得是占8个字节,但是答案是7,不知道为什么
”\n\179\t\\123"又是占几个字节,都搞糊涂了,我知道字符串后边要加一个\0,那个大哥解释下
2楼大哥,问下为什么这里不加\0呢,就是想问问为什么不加\0,我就是不清楚那些地方要加,那些不加,都搞糊涂了
展开
 我来答
songwanqiang
推荐于2017-11-26 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:942万
展开全部
"ab\t\\029" 共七个字节,分别是:a、b、\t(制表位)、\\(反斜杠)、0、2、9

"\n\179\t\\123"共八个字节,分别是\n(回车)、\17、9、\t(制表位)、\\(反斜杠)、1、2、3
没什么难的,就是转意字符,注意一个问题就可以了,\KKK格式转意字符要求KKK是八进制,所以\179这里分为\17和9而不是\179,八进制中不会包括9的
上述当然不包括\0这个字符。。。题目仅仅是问你这些字符占用多少内存。。。

这些问题没什么用的,就是考试用用。。。

PS:题是问你这些字符占多少,加\0是C语言自己处理的,和字符串没关系的
worldrna
2008-11-07 · TA获得超过184个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:146万
展开全部
注意:
\0是C语言区分一个字符串有没有结束的标志。
\0是在内存中存贮字符串时,系统自己加上去的。
而求一个字符串在内存中占的字节数时是要加上\0的。

求一个字符串的长度时是不考虑\0的。

转义字符包括:
\n 换行
\t跳到下一个制表位置
\b退格
\r回车,将当前位置移到本行开头
\f换页,将当前位置移到下页开头
\\代表一个反斜杠字符“\"
\'代表单引号
\"代表一个双引号
\ddd 1到3位8进制数所代表的字符
\xhh 1到2位十六进制数所代表的字符

ab\t\\029长度是7,在内存中占8个字节
在内存中存放时具体是:a,b,\t,\\,0,2,9,\0

\n\179\t\\123长度是8
在内存中是:\n,\17,9,\t,\\,1,2,3,\0占9个字节

\179是两个字符,一个是\17(该处的17是8进制数)代表的字符,另外一个是字符9

\x41是代表ASCII值是十六进制41(十进制数是65)所代表的字符。即字符A
要是再不明白,问我。
不过我建议你去看看转义字符。把这些东西搞明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黎孝威水
2019-07-17 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:35%
帮助的人:989万
展开全部
使用strlen()
函数来计算
strlen()
函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,
strlen
需要\0结束符来计算长度,
所以它会以p数组内存为起点,
一直往后在连续的内存中找,
它是不管越界问题的,
直到找到一个\0,才认为这个串结束了,
然后返回长度.
具体所占内存大小,
完全是看内存中的数据是多少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cun2012
2008-11-06 · TA获得超过144个赞
知道答主
回答量:272
采纳率:0%
帮助的人:71.7万
展开全部
a,b,\t,\\,0,2,9,七个字节
\n,\17,9,\t,\\,1,2,3,八个字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式