c++ cout命令 转义字符相关的练习题一道
26:下面程序的输出结果为()。#include<iostream.h>#include<string.h>voidmain(){charst[20]=”hello\0\...
26: 下面程序的输出结果为( )。
#include<iostream.h>
#include<string.h>
void main( )
{ char st[20]=”hello\0\t\\”;
cout<<strlen(st);
cout<<sizeof(st)<<endl;
cout<<st;
}
A.520 B.1220 C.520 D.1120
Hello hello\0\t\\ hello\t hello \
为什么选A呀? 展开
#include<iostream.h>
#include<string.h>
void main( )
{ char st[20]=”hello\0\t\\”;
cout<<strlen(st);
cout<<sizeof(st)<<endl;
cout<<st;
}
A.520 B.1220 C.520 D.1120
Hello hello\0\t\\ hello\t hello \
为什么选A呀? 展开
5个回答
2011-01-09
展开全部
第一个输出字符数组st实际有hello共5个字符;
=================================================================
第二个输出分析如下:
由于st为字符数组,而数组的sizeof值等于数组所占用的内存字节数,所以输出为20;
---------------------------------------------------------------------------------------------------------
数组的sizeof
数组的sizeof值等于数组所占用的内存字节数(切记与求数组长度不是一回事),如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int,4个字节)
数组长度可以这样做:
int c1 = sizeof( a1 ) / sizeof( int ); // 总长度/单个元素的长度
==================================================================
第三个输出就是直接输出字符数组的字符串hello。
==================================================================
最后强调一下:由于第一个输出未进行换行操作(endl),所以5和20显示时在一起了。
=================================================================
第二个输出分析如下:
由于st为字符数组,而数组的sizeof值等于数组所占用的内存字节数,所以输出为20;
---------------------------------------------------------------------------------------------------------
数组的sizeof
数组的sizeof值等于数组所占用的内存字节数(切记与求数组长度不是一回事),如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int,4个字节)
数组长度可以这样做:
int c1 = sizeof( a1 ) / sizeof( int ); // 总长度/单个元素的长度
==================================================================
第三个输出就是直接输出字符数组的字符串hello。
==================================================================
最后强调一下:由于第一个输出未进行换行操作(endl),所以5和20显示时在一起了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen(st)求字符串长度:hello,长度为五,hello后面默认有"\0"strlen()函数结束。
sizeof(st)求数组str[20]存储的内存字节,每一个字符为1,所以为20
cout<<st; //输出数组,其中赋值时,"hello\0\t\\" \0为字符结束,不添加是,系统默认添加,\t,\\皆为转义字符。
sizeof(st)求数组str[20]存储的内存字节,每一个字符为1,所以为20
cout<<st; //输出数组,其中赋值时,"hello\0\t\\" \0为字符结束,不添加是,系统默认添加,\t,\\皆为转义字符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在c\c++中\0是表示字符串结尾,虽然你的字符数组st长度是20,但是strlen在计算字符串长度的时候,遇到\0就返回,也就是字符串长度只有5。sizeof返回的数组st的长度20。cout输出的时候也是,遇到\0它就认为字符串已经结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。char st[20]=”hello\0\t\\”中含有'\0',所以strlen(st)为5。
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 所以sizeof(st)为20
cout输出字符串时也是遇到'\0'为止。所以输出"hello”
所以选A
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 所以sizeof(st)为20
cout输出字符串时也是遇到'\0'为止。所以输出"hello”
所以选A
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询