sizeof与strlen的区别

功能区别:sizeof用来求所占内存大小,而strlen用来求字符串长度。

区别:

(1)sizeof是一个操作符,它的结果类型为size_t(无符号整型数据),而strlen是一个函数,其结果类型也是size_t;

(2)sizeof的参数可以是变量,也可以是类型,为变量的时候可以不加括号(sizeof a);而strlen的参数只能是变量;

例如,

int a = 3;

sizeof(a) = 4;

sizeof(int) = 4;

char *p = "hello 123!";

strlen(p) = 10

(3)在大不部分的编译器下,编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来;

例如,

int a = 10;

printf( "%d",   sizeof(a++));//在编译的时候,a++就被替换成了a所占空间大小4

printf("%d", a);

结果为:4,10 

(4)数组做sizeof的参数不退化,传递给strlen就会退化成指针。

在C++中,传递数组永远都是传递指向数组首地址元素的指针,编译器不知道数组的大小。如果想在函数内知道数组的大小,需要用一个len作为形参传入。

例如,

char str[10] = "abcd";

strlen(str) = 4;

sizeof(str) = 10;

而char *p = "1234567890";

strlen(p) = 10;

(5)计算结构变量的大小就必须讨论数据对齐的问题。

(6)sizeof操作符不能用于函数类型、不完全类型或位字段。不完全类型指的是位置存储大小数据的数据类型,如动态数组、void等。

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文链接: https://www.cnblogs.com/wangicter/archive/2012/08/24/4767322.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    sizeof与strlen的区别

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/60771

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午9:37
下一篇 2023年2月9日 上午9:37

相关推荐