字符串所占内存字节
有几道题问字符串所占字节数“ab\t\\029"内存中我觉得是占8个字节,但是答案是7,不知道为什么”\n\179\t\\123"又是占几个字节,都搞糊涂了,我知道字符串...
有几道题问字符串所占字节数
“ab\t\\029" 内存中我觉得是占8个字节,但是答案是7,不知道为什么
”\n\179\t\\123"又是占几个字节,都搞糊涂了,我知道字符串后边要加一个\0,那个大哥解释下
2楼大哥,问下为什么这里不加\0呢,就是想问问为什么不加\0,我就是不清楚那些地方要加,那些不加,都搞糊涂了 展开
“ab\t\\029" 内存中我觉得是占8个字节,但是答案是7,不知道为什么
”\n\179\t\\123"又是占几个字节,都搞糊涂了,我知道字符串后边要加一个\0,那个大哥解释下
2楼大哥,问下为什么这里不加\0呢,就是想问问为什么不加\0,我就是不清楚那些地方要加,那些不加,都搞糊涂了 展开
4个回答
展开全部
"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语言自己处理的,和字符串没关系的
"\n\179\t\\123"共八个字节,分别是\n(回车)、\17、9、\t(制表位)、\\(反斜杠)、1、2、3
没什么难的,就是转意字符,注意一个问题就可以了,\KKK格式转意字符要求KKK是八进制,所以\179这里分为\17和9而不是\179,八进制中不会包括9的
上述当然不包括\0这个字符。。。题目仅仅是问你这些字符占用多少内存。。。
这些问题没什么用的,就是考试用用。。。
PS:题是问你这些字符占多少,加\0是C语言自己处理的,和字符串没关系的
展开全部
注意:
\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
要是再不明白,问我。
不过我建议你去看看转义字符。把这些东西搞明白。
\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
要是再不明白,问我。
不过我建议你去看看转义字符。把这些东西搞明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用strlen()
函数来计算
strlen()
函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,
strlen
需要\0结束符来计算长度,
所以它会以p数组内存为起点,
一直往后在连续的内存中找,
它是不管越界问题的,
直到找到一个\0,才认为这个串结束了,
然后返回长度.
具体所占内存大小,
完全是看内存中的数据是多少
函数来计算
strlen()
函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,
strlen
需要\0结束符来计算长度,
所以它会以p数组内存为起点,
一直往后在连续的内存中找,
它是不管越界问题的,
直到找到一个\0,才认为这个串结束了,
然后返回长度.
具体所占内存大小,
完全是看内存中的数据是多少
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a,b,\t,\\,0,2,9,七个字节
\n,\17,9,\t,\\,1,2,3,八个字节
\n,\17,9,\t,\\,1,2,3,八个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询