大家好,欢迎来到IT知识分享网。
一.sizeof
头文件: typedef
类型: unsigned in
使用方法:sizeof (类型说明符) 或者 sizeof 表达式 (表达式可以是数组、指针、类型、对象、函数等)
作用:返回一个变量或者类型的大小(以字节为单位);在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。
sizeof语法有以下两种:
sizeof(type_name) //类型
sizeod(object) //对象名
sizeof计算对象的大小也是转换成对 对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。sizeof对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。
(以下仅是在32位编译器下进行)
eg:
sizeof(2) // 结果为 4
sizeof(4) // 结果为 4
sizeof(2.0) //结果为 2
sizeof(4/2.0) 结果为 2 因为在计算时自动进行了类型提升
由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系.
eg:
int i = 0;
i=10;
char *ary=(char*)malloc(sizeof(char)*i);
printf(“%d”, sizeof(ary)); //运行结果为: 4
sizeof的计算发生在编译时刻,所以它可以被当作常量表达式使用.
i=10; char arr[sizeof(i)*10];
二.strlen
头文件: string.h
定义: size_t strlen(const char * str);
返回值: str字符串的长度
作用: 返回字符串的长度。
字符串的长度由终止空字符’\0’确定:包括字符串开头和终止空字符之间的字符数(不包括终止空字符本身)。
strlen(str)求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的
char str[100];
printf(“%d”, strlen(str));
输出结果:随机值
搞懂以下的题就不容易出错了.
char arr1[] = “abcd”;
char arr2[] = { ‘a’, ‘b’, ‘c’, ‘d’ };
char *arr3 = “abcd”;
printf(“%d\n”, strlen(arr1)); //4
printf(“%d\n”, strlen(arr2)); // 随机值
printf(“%d\n”, strlen(arr3)); //4
printf(“%d\n”, sizeof(arr1)); //5 包括’\0′
printf(“%d\n”, sizeof(arr2)); //4
printf(“%d\n”, sizeof(arr3)); //4 实际测的是指针大小
sizeof 与strlen的区别
⒈sizeof是取字节运算符,而strlen是函数。
⒉sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。
⒊sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’\0’结尾的。sizeof还可以用函数做参数
eg:
short fun()
{
;
}printf(“%d”, sizeof(fun())); // 2 相当于测fun函数的返回值类型的大小即sizeof(short)
4.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。
5.如果给定字符串,要求传参它的长度,一定要使用strlen
6数组做sizeof的参数不退化,传递给strlen就退化为指针了。
7.注意以下这个例子.
char str[20]=”0123456789″;
int a=strlen(str); //a=10; strlen 计算字符串的长度,以结束符 ‘\0’为字符串结束。
int b=sizeof(str); //b=20; sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/16136.html