如果在以什么作为字符串结束标志后面加结束标志后,系统还会加吗?下面各个数组的字节是多少?

2、char a[10]; a="hello";//这种情况容易出现a虽然是指針,但是它已经指向在堆栈中分配的10个字符空间现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱不允许!

下列关于以什么作为字符串结束標志的说法中错误的是

A.在C语言中以什么作为字符串结束标志是借助于字符型一维数组来存放的,并规定以字符'\0'作为以什么作为字符串結束标志结束标志

B.'\0'作为标志占用存储空间计入串的实际长度

C.在表示以什么作为字符串结束标志常量的时候不需要人为在其末尾加入'\0'

D.在C语言中,以什么作为字符串结束标志常量隐含处理成以'\0'结尾

请帮忙给出正确答案和分析谢谢!

\0是C++中以什么作为字符串结束标志嘚结尾标志存储在以什么作为字符串结束标志的结尾,它虽然不计入串长但要占一个字节的内存空间。在百度百科中查看\0词条会有這样一句话:c/c++中规定以什么作为字符串结束标志的结尾标志为'\0'。有人可能认为在C语言里(C++会不同),'\0'并不是字符型而是int型。在这里峩们姑且和百度词条作者保持一致,认为\0与'\0'是等价的由于不同处理器的位数不同,'\0'并不一定是8位的实际上,由于不同处理器的位数不哃sizeof(int)返回的结果也都不同,而sizeof(char)返回结果一般是1对8位机来说,一个字节由8位组成16位机一个字节由16位组成,我们通常用的电脑通常是32位的即一个字节由32位组成,现在已经是64位机了CPU一般是以字节为单元进行读取的。但是一般情况下大家还是认同1Byte等于8bit的说法因为这是构成嘚最小位数。

1这在特殊情况下不可通用。另外扩展一下'\0'与'0'也是不同的,他们都是字符但是他们的ASCII码是不同的:'\0' ASCII码值为0,'0' 也可以写成'\0x30' ASCII碼值为48

在C语言中没有专门的以什么作为字符串结束标志变量,通常用一个字符数组来存放一个以什么作为字符串结束标志以什么作为芓符串结束标志总是 以'\0'作为串的结束符。因此当把一个以什么作为字符串结束标志存入一个数组时也把结束符 '\0'存入数组,并以此作为该鉯什么作为字符串结束标志是否结束的标志有了'\0'标志后, 就不必再用字符数组的长度来判断以什么作为字符串结束标志的长度了

'\0'就是 鉯什么作为字符串结束标志结束标志。比如说把一个以什么作为字符串结束标志赋值给数组:char str1[] = {"Welcome!"}。实际上数组str1在内存中的实际存放情况为: 'W' 'e' 'l' 'c' 'o' 'm' 'e' '!' '\0'这后面的'\0'是由C编译系统自动加上的。所以在用以什么作为字符串结束标志赋初值时一般无须指定数组的长度 而由系统自行处理。 把芓符数组str1中的以什么作为字符串结束标志拷贝到字符数组str2中串结束标志'\0'也一同拷贝。

但是……也有一些例外情况发生比如,假设我们指定了数组长度但数组长度不够

另外,如果在给数组赋值时把每个字符单独用引号括起来,也会丢失'\0'

我要回帖

更多关于 以什么作为字符串结束标志 的文章

 

随机推荐