sizeof和strlen区别与不同

来源:互联网 发布:centos twisted 安装 编辑:程序博客网 时间:2024/05/16 14:52
sizeof是一个操作符关键字,返回的结果为 size_t  (typedef unsigned int size_t;)

sizeof的参数可以是数据类型,也可以是变量,无论是变量还是数据类型,都会转化为数据类型作为参数,因为在C语言中变量是有类型的。

发生在编译时候就计算出了sizeof结果

sizeof计算的是数据类型占内存的大小

数组做sizeof参数不退化。

char a[5]

int b[5]

sizeof(a)   sizeof(b) ,这时候的参数不是作为指针传递,故为不退化

sizeof(a)结果为5,因为char类型为1

sizeof(b)结果为10或者20,因为int类型在16位机器(2个字节),32位机器(4个字节)下不同

即不同字长度的机器上整型数据的长度。

指针变量的长度和其指向的数据类型没有关系,而与机器位数有关系,16位机器就是2个字节,32位机器就是4个字节


strlen是库函数 返回的结果为 size_t  (typedef unsigned int size_t;)

strlen只能以结尾为'\0'的字符串做参数

strlen是必须运行时才能计算出来

strlen是计算字符串的实际长度,不包括'\0'

strlen就会退化为指针。
0 0
原创粉丝点击