C语言中sizeof和strlen的区别与联系

C语言中sizeof和strlen的区别与联系

        在学习C语言的时候发现经常将sizeof和strlen弄混淆,今天有遇到这个问题,所以查了一些资料,将他们总结在下面,虽然不是很全,但已经可以通过他们之间的比较来区开分了

        strlen:一般用来统计字符串中字符的个数

        sizeof:一般统计对象所占的单元(字节)的个数,一般来说,般以8位二进制作为一个存储单元,所以字节数一般等于存储单元的个数。

sizeof与strlen比较

比较项目

sizeof

strlen

返回值

整数

整数

参数

类型、数组、指针‘函数

数组

是否包含“\0”

包含

不包含(以“\0结束”)

本质

运算符

函数

计算时间

编译

运行

一般用途

统计存储单元个数

统计字符串中字符的个数,包括空格

sizeof用法注意:1、用于测定类型所占存储单元时,类型必须用sizeof(类型)

                            2、用于数组时,表示数组所占的存储空间的大小,可以不用(),即:sizeof(name)                 = sizeof  name,name为数组

#include <stdio.h>
#include <string.h>
#define PRAISE "What a super marvelous name!"

int main(void)
{
   char name[40];
   printf("What's your name?\n");
   scanf("%s",name);
   printf("Hello,%s.%s\n",name,PRAISE);
   printf("Your name of %d letters occupies %d memory cells.\n",strlen(name),sizeof(name));
   printf("The phrase of praise has %d letters",strlen(PRAISE));
   printf("and occupies %d cells.\n",sizeof(PRAISE));
   
   return 0;
}

上面为C Primer Plus上的一段示例代码可以比较出他们的不同之处

int sum(int ar[], int n)
{
   int i;
   int total = 0;
   
   for(i=0;i<n;i++)
   {
    total += ar[i];
   }
   printf("The size of ar is %zd bytes.\n",sizeof ar);

   return total;
}


 

注意:sizeof后面的对象如果是实参数组名,则结果为该数组的存储空间,但sizeof如果为一个指向数组首元素的指针,则对于4字节地址的计算机系统,指针的大小为4字节

如以上的sum函数,ar是一个指向数组的首元素的指针,所以该函数输出的结果为4。

 

 


 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值