您的位置:首页 > 编程语言 > C语言/C++

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

2012-11-07 15:35 148 查看
头文件: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][b]]={"abcdefh"};[/b]

很有可能打印的时候后面出现一些乱码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: