字符串赋值
下面能正确进行字符串赋值操作的是A、 char s={"ABCDE"};
B、 char s={'A','B','C','D','E'};
C、 char *s;
s="ABCDE";
D、 char *s;
scanf("%s",s);
这题应该选B还是C啊,其他错的又是哪儿错了啊 B c正确
a和b不是字符串
d没有给s分配空间
本帖最后由 gandixiwang 于 2022-9-15 16:08 编辑
哦对,漏看题目了 B、 char s={'A','B','C','D','E'};
C、 char *s;
s="ABCDE";
D、 char *s;
scanf("%s",s);
这些都对 A、 char s={"ABCDE"};
也对,但总觉得没有'\0'
输出会不会出乱码? cout << s<<endl;
只有C是正确的
字符串在C语言的定义是以'\0'结尾的字符数组
A.由于ABCDE本身就具有5个字符,导致剩下来的'\0'没有地方放,所以这只能算字符数组,不能算作字符串
B.没有以'\0'结尾,所以这只能算字符数组,不能算作字符串
D.没有给s分配内存空间
嗯,有道理,结尾确实很重要。最后一个,没有分配空间的,无法接受多余的,输入一排字符,首地址 char *s,指针是4字节,加后面的3字节,会不会支持存放3个字节长度的输入? 我速度起来试试,等我提交结果 嗯,这char *s和数组不一样,确实不存在首地址的概念,s就是一个 没有空间的 纯指针,楼主是正确的! 我试了,无法接受任何输入.
试了一下发图,不能访问
页:
[1]