
正文
c语言字符串数组问题,c语言字符串数组和字符数组
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言中,关于字符串长度与字符数组长度的问题。
1、数组长度与字符串长度区别:结束标志不同、特点不同 结束标志不同 字符串:必须以\0结尾;// ‘ \0 ’ 的意义是“字符串结束符”。
2、用函数求的长度其实就是字符串长度,而非占内存大小。因此长度是4,占内存是5,最后有个\0做结束符,不是\n。
3、最为明显的差别是二者装载有样多字符时,用函数strlen()返回的长度不同,且字符串的长度比字符数组长度大1。
4、char a[]=ancdn\0;字符串长度为 5。因为 字符串长度 算到 字符串结束符 以前,不包括 字符串结束符。例如:123456\089abcd\0, 字符串长度计算到第一次遇到的结束符\0,长度是 6, 后面不算。
5、字符串或串是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n=0)。它是编程语言中表示文本的数据类型。字符串赋值有一定要求,例如C语言的运算符根本无法操作字符串。
相关问答
Q1: C语言字符串数组的问题
项的数组定义符合C语言要求,即 其一维长度不可省略。③ B 项的数组初始化符合C语言要求,使用 字符 初始化数组,需加花括号。且,因 二维长度省略,所以 数组总长度在初始化时,可任意改变。
c语言中字符数组并没有规定最后一个字符为\0,甚至可以不包含\0,添加\0作为结束标志是针对于c语言对字符串的处理而言的,因此,字符数组中最后一个字必须为‘\0’是错误的。
根本原因是字符串不是一个基本数据类型,其真实名称应该是“字符串数组”。C语言是不能用 = 对数组进行赋值的。定义数组时候初始化使用 = , 但这里不能理解成赋值,因为这是编译器在编译的时候进行处理的。
字符数组最后一个单元可能是有实在意义的,二字符串的最后一个单元为一个结束标志,是一个结束符,没有实在意义。当将字符数组当作字符串时,还要人为补上最后的结束符才行,这时可能就不可以直接用数组的名字做实参了。
而 char s[]=12345;这个语句,是赋初值。 这是允许的。 如果你要问为什么,那只能说C语言的语法就是这么规定的。
char s[]={a,b,c}; //实际占用3个字节,strlen计算长度为(随机值),不是3,因为这个只明确了s是一个有三个元素的字符数组,第四个元素已经是非法空间了。
Q2: C语言:字符串数组的问题
1、其一维长度不可省略。③ B 项的数组初始化符合C语言要求,使用 字符 初始化数组,需加花括号。且,因 二维长度省略,所以 数组总长度在初始化时,可任意改变。
2、在VS2010上没通过编译,你把a[5]改成a[6]就行了,\0占一个空间,加\0是为了测定数组的长度。
3、这是C语言的范畴:根本原因是字符串不是一个基本数据类型,其真实名称应该是“字符串数组”。C语言是不能用 = 对数组进行赋值的。
Q3: C语言字符串数组问题
1、这是C语言的范畴:根本原因是字符串不是一个基本数据类型,其真实名称应该是“字符串数组”。C语言是不能用 = 对数组进行赋值的。
2、c语言中字符数组并没有规定最后一个字符为\0,甚至可以不包含\0,添加\0作为结束标志是针对于c语言对字符串的处理而言的,因此,字符数组中最后一个字必须为‘\0’是错误的。
3、楼正解,你在初始化时给数组a赋了3个值,所以其实a的类型应该是 char a[3],数组长度为3,。
4、字符数组最后一个单元可能是有实在意义的,二字符串的最后一个单元为一个结束标志,是一个结束符,没有实在意义。当将字符数组当作字符串时,还要人为补上最后的结束符才行,这时可能就不可以直接用数组的名字做实参了。
Q4: c语言中字符数组中最后为什么必须为\0?
因为c语言中没有字符串类型,所以借助字符数组来存储字符串,为了区别字符串,需要在字符数组的末尾添加ASCII为0,即\0,来作为字符串的结束标志,并且不计入字符串长度。
因为c语言中没有字符串这种数据类型,只有char字符类型,在C语言中所谓的字符串其实是char数组,数组最后一个元素加上“\0,表示字符串结束,这是一种字符串的表达方式。
\0一般放在字符串的结束处,表示字符串的结束,其是ascii值为0的字符的转义。
定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实 际长度,C 语言规定了一个“字符串结束标志”,以字符\0’代表。如果有一个字 符串,其中第10个字符为\0,则此字符串的有效字符为9个。
c语言字符串数组问题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言字符串数组和字符数组、c语言字符串数组问题的信息别忘了在本站进行查找喔。








