首页 > 编程知识 正文

c语言求输入数组长度,c语言sizeof测字符串长度

时间:2023-05-06 21:11:48 阅读:155717 作者:623

计算字符数组的长度:必须以终止符号“”为边界,但可以通过以下两种方法为字符数组赋值:

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /

(1) charCHS(7)={'a ',' c ','0',' z ','3',' d'}; //长度为6

上式为: )2) charCHS(7)={'a ',' c ','0',' z ','3',' d ','/0'}; //长度为6

((3) charCHS ) )=(a )、(c )、(0)、(z )、(3)、(d )、(0) )。 //长度为6

1:于(4) charCHS )={'a '、' c '、'0'、' z '、'3'、' d'}; //长度不明。 因为数组最后没有结束符'/0 '

( 于) charCHS(6)={'a ',' c ','0',' z ','3',' d'}//长度未知。 因为数组的末尾没有结束符“/0”

其中,(4)和(5)也是等价的,但在实际应用中不应该出现。 因为没有终端代码的数组的长度是未知的,所以容易发生数组的越境,访问非法的存储器,引起意想不到的程序错误。

因为字符数组是c语言的概念,所以可以看出c语言的语法没有保证。 字符数组的末尾必须有结束符,程序员自己必须采取措施以确保数组的最后一个元素是“/0”。

定义时用字符初始化

不等价

不等价

2: 用字符串对数组进行初始化

C语言没有特殊的字符串变量,通常以字符数组存储字符串。 字符串始终以“/0”作为字符串的结束符。 因此,当字符串存储在一个数组中时,终止符“/0”也存储在数组中,并作为该字符串是否结束的标志。 有了“/0”标志,就不必根据字符数组的长度来确定字符串的长度。

在c语言中,可以用字符串给数组分配初始化值。

例如:

char c[]={'c ',',',',' p ',' r ',' o ',' g ',' r ',' a ',' m'};

可以写如下。

char c[]={'C program'};

删除或{}并写如下。

char c[]='C program ';

用字符串分配比用字符逐个分配多1个字节,用于存储字符串结束标志“/0”。 上面数组c在内存中的实际存储情况如下。

C p r o g r a m /0

‘/0’由c编译系统自动添加。 由于采用了“/0”标志,在字符串中分配初始值时一般不需要指定数组的长度,而是由系统自行处理。

3. sizeof和strlen的区别

strlen只能使用char*作为参数,并且char数组必须以“”/“0”结尾。

数组生成sizeof的参数不恶化,传递给strlen时恶化为指针。 详细情况,百度知道: strlen和sizeof的区别吗? http://www.Sina.com/http://www.Sina.com /

http://www.Sina.com/http://zhidao.Baidu.com/question/12033577.html注意:大多数编译器在编译时将sizeof计算为类型或变量的长度。 这就是sizeof(x )。 由于可用于定义数组,因此即使字符数组中没有结束符'/0 ',sizeof也可以计算数组“长度”的原因,但此处的“长度”实际上是编译器为数组变量分配的内存大小示例: char chs[]={'a ',' c ','/0 ',' z ','3',' d'}; //sizeof(CHS )=6; Strlen(CHS )=2。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。