杂记之C语言函数strlen和操作符sizeof

头文件:string.h

格式:    strlen (字符数组名)   

功能:  strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串           结束符'\0'为止,然后返回计数器值。所以说

                计算字符串s的(unsigned int型)长度,不包括'\0'在内  

                strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。而sizeof()返回的是变量声明后所占的内存数。

说明:    返回s的长度,不包括结束符NULL

                大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因

           char str[20]="0123456789";

           int a=strlen(str); //a=10;

           int b=sizeof(str); //而b=20;

sizeof的结果为字节的个数,而不是位数。

补记:(1)char str[20]="0123456789\0aaa";//strlen(str)结果为10,

           但是如果是

           char str[20]="0123456789\034";//很有可能strlen是转义字符,所以结果为strlen(str)为11;

           (2)sizeof(str)/sizeof(str[0])很多情况下并不等于strlen[str],

          sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。

          而strlen 返回的是实际串长,即strlen的结果要在运行的时候才能计算出来。

          (3) 在用数组定义字符串时,多定义的空间使得默认初始化为0,char str[20]={"abcdefh"};若不多定义,即char str[7]]={"abcdefh"};

          很有可能打印的时候后面出现一些乱码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值