山字头加仑字念什么:关于数组的!

来源:百度文库 编辑:高校问答 时间:2024/03/28 23:57:44
为什么用字符串给数组定义的时候,字符串的长度不能起过8,要留一个结束标记'\0',如果超过8了,什么怎么样呢?能举出一个例子吗?

要留结束标记'\0'的问题楼上两位都已经说的很明白了,至于你说的字符串长度不能超过8的问题,是在一些较早的编译器中才有的规定,比如turbo c中e.g三个字符串“1234567”、“12345678”、“123456789”由于编译器规定的最多长度是8位,所以这三个字符串会被当做相同的来处理……因为他们的前8位都一样。也就是说在长度超过8的时候,编译器只认为它的前8位是有效的。
不过这种情况只是在较早的编译器中才出现的。现在很多编译器在最大长度方面增加到了1024。

首先用字符串给数组负值的时候没有长度限制
比如
char c[256]="hello daidu ."
但是一定要记得在c中一个字符串是以'\0'结尾,所以实际长度是你的字符串长度加一,比如上面的字符"hello daidu ."
长度是12个字节,但是存储要用13个字节,因此数组的长度至少是要存储字符串的长度加1就可以了

编译器把'\0'看作字符串的结束,

char XXX[]实际是一个指针的起始位置,它并不能说明自己的长度有多少。可是程序员和编译器都要知道什么地方是字符串的结尾,怎么办呢?这就是'\0'的作用了,一见到'\0',就明白,这个字符串到头了,以后的部分不是这个字符串的内容。

char XXX[] = "123456"实际被解释成:
char XXX[sizeof("123456") + 1] = "123456\0";

你说的字符串长度不能超过8,我没见过,
一般我定义字符串,都是超过1024的.

超过了 他的指针就指到 你不可预测的位置 这样就的不到你想要得答案!! 这例子书上有 <C 语言> 绿皮的 清华大学 编的