sizeof和strlen的区别是什么?

一、定义

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));   //编译警告或报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值