一、定义
1、sizeof是C语言中的一个运算符,它的作用是计算一个变量或者一个类型所占空间的大小。
2、strlen是C语言中的库函数,所在头文件为#include <string.h>。
它函数原型为unsigned int strlen(const char *p); 其中p为指定的字符串。
注:strlen只能用char *作为参数,它求的是字符串的实际长度,当遇到第一个’\0’结束。
如果参数不是char *类型,将会产生编译警告或报错。
二、举例
例1.
#include <stdio.h>
#include <string.h>
char arr[]={'a','b','c','d','e','f'};
printf("%d\n",sizeof(arr)); //6
printf("%d\n",sizeof(&arr)); //4
printf("%d\n",strlen(arr)); //随机值
printf("%d\n",strlen(&arr)); //编译警告或报错
注:sizeof(arr)在这里经过特殊处理了,没有计算本身类型的大小,所以当是sizeof(数组名)的时候,这里的数组名表示的是整个数组,因此计算的是整个数组的大小;strlen(arr)产生随机值的原因是不知道将会在什么时候遇到‘\0’。
例2.
#include <stdio.h>
#include <string.h>
char arr[]="abcdef";
printf("%d\n",sizeof(arr)); //7
printf("%d\n",sizeof(&arr)); //4
printf("%d\n",strlen(arr)); //6
printf("%d\n",strlen(&arr)); //编译警告或报错
注:例子2与例子1的不同之处在于对arr数组的定义,char arr[]="abcdef"中隐含了’\0’,因此,sizeof(arr)的值为7。
例3.
#include <stdio.h>
#include <string.h>
char *p="abcdef";
printf("%d\n",sizeof(p)); //4
printf("%d\n",sizeof(&p)); //4
printf("%d\n",strlen(arr)); //6
printf("%d\n",strlen(&p)); //编译警告或报错