面试常见题之sizeof与strlen的区别

本文作者非计算机或软件专业出身,分享了在忙碌论文与专利后,重新学习C++和数据结构的经验。重点阐述了sizeof与strlen的区别,包括使用场景、功能及实际应用案例。通过具体代码示例深入解析两者之间的差异,旨在促进讨论与进步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     前段时间一直在忙论文和专利的事情,没时间去看一些c++/数据结构等笔试面试要用的知识,虽说做科研一直用的是c语言,但是平时用的哪些知识太狭隘了,主要集中在一些聚类算法上面,并没有多少时间去探讨一些c++/c底层的一些东西,现在马上要找工作了,着手看了一些东西,现在和大家分享一下,当然,我不是计算机专业的,也不是软件专业的,在叙述我的观点的时候,难免会有一些描述不够完整或者正确的地方,真心希望大家可以指点一下。

  从今天起呢 我尽量做到每天都更新我的博客,写不是目的,目的是和大家一起探讨,探讨才有进步嘛!

  sizeof和strlen的区别:

1 sizeof是运算符,而strlen是函数;

2 sizeof的用法是sizeof(参数),这个参数可以是数组,指针,类型,对象,甚至是函数,其值在编译的时候就计算好了,而strlen的参数必须是字符型指针(char*),其值必须在函数运行的时候才能计算出来;

3 sizeof的功能是获得保证能容纳实现的建立的最大对象的字节的大小,而strlen的功能是返回字符串的长度,切记这里的字符串的长度是包括结束符的;

4 当数组作为参数传递给函数的时候,传的是指针,而不是数组,传递数组的首地址;

看下面的例子:

char str[20] = "0123456789";
int a = strlen(str);
int b = sizeof(str);


则  a = 10;

      b = 20;

这个例子相信大家都能看明白,strlen返回的字符串的长度,sizeof返回建立的最大对象的字节的大小,因此a = 10,b = 20;

看第二个例子:

int fun(int arry[])
{
	return sizeof(arry);
}
void main()
{
	int arry[]={1,2,3,4,5};
	cout<<fun(arry);
}

则最后输出的结果为多少呢?

正确的结果应该为4,而不是5,前面说了当一个数组作为参数传递给函数的时候,传递的是指针,而不是数组,也就是说在上面的函数中,传给函数的参数是一个指针,我们知道任何类型的指针的大小都是占4个字节,所以sizeof(arry)应该是4个字节,故最后的结果应该是4

再看下面一个例子

char* str = "0123456789";
int a = sizeof(str);
int b = sizeof(*str);

a = 4;

b =1;
这个想必大家都明白了,sizeof(str),这个str是指针,而sizeof(*str)中的参数*str则是第一个字符,因此大小应该为1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值