sizeof和strlen的区别与联系

sizeof

1.是一个运算符
2.是分配的数组实际所占的内存空间大小,不受里面存储内容的改变
3.sizeof可以用类型做参数,还可以用函数作为参数

int fun();
printf("%d\n",sizeof(fun()));
则输出的结果是sizeof(int)=4;

strlen

1.是一个函数
2.计算字符串的长度,以’\0’为字符串结束标志
3.strlen只能用char*做参数

简单用代码来看两者的区别:

char str[20]="0123456789";
int a=sizeof(str);// a=20;
int b=strlen(str);//b=10;
char* ptr="0123456789";
int a=sizeof(ptr);//a=4;此时的ptr是字符指针,所以在32位操作系统上是4个字节
int b=sizeof(*ptr);//b=1;此时*ptr指的是第一个元素,因为类型是char所以1个字节
int c=strlen(str);//c=10;

注意:::

运算符和函数的区别
  • 语法形式上有区别
  • 运算符只能重载,不能自定义,函数的名字随便起,只要是个标识符就行;但运算符不行,比如,你无法仿照其他语言的符号,自定义一个乘法运算符“”**“”
  • 任何函数都可以重载或者覆盖,但通常你不能改变运算符作用于内置类型的行为,比如你不能通过重载"operator+",让3+2产生6.

其实总结来看,运算符本质上也是函数。只是运算符是编译器需要进行进一步解释。而函数是直接调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记得多喝热水…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值