sizeof与strlen的区别及例题解析

1 篇文章 0 订阅
1 篇文章 0 订阅

sizeof:

计算数组长度,返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,该类型保证能容纳实现所建立的最大对象的字节大小。

strlen:

strlen在C语言中是string标准库中的函数,但其本质是一个计数器,从程序员给的任何位置开始计数,直到遇到\0,便结束然后返回计数器的值

 

例题代码解析:

#include <stdio.h>
#include <string.h>


void func(char a[100])
{
	printf("--1--%d\n",sizeof(a));    //a的长度是100,但是它是一个函数的参数,因此是地址传递,所以sizeof的值为4
	printf("--strlen1--%d\n",strlen(a));  //参数传递的是b,字符串b有效长度是遇到\0结束,因此strlen为5
}

int main()
{
	char a[] = "hello world!";
	char* p = a;
	char b[100] = "nihao";

	printf("--2--%d\n",sizeof(a));    //数组a是变长数组,根据所初始化的长度确定长度(包括\0),因此sizeof的长度为13
        printf("--strlen2--%d\n",strlen(a)); //strlen依然是有效长度所以是12
	
        printf("--3--%d\n",sizeof(p));    //*p是一个指针,指针类型在32位操作系统下是四个字节的,因此sizeof的值为4
        printf("--strlen3--%d\n",strlen(p)); //*p = a因此数组a中的字符串赋值给了指针p所以strlen为12
	
        printf("--4--%d\n",sizeof(b));    //b的长度为100,因此sizeof为100
	func(b);                         //函数传参
        return 0;
}

输出结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值