sizeof()与strlen()的区别详解

sizeof()

1. sizeof()【操作数所占空间的字节数大小】是一种c中的基本运算符。

可以以类型、指针、数组和函数等作为参数。

头文件类型为unsigned int。

运算值在编译的时候就出结果,所以可以用来定义数组维数。

char a[5]="123";
int b=sizeof(a);//b=5
int c=strlen(a);//c=3

sizeof()是一种单目操作符,是用来计算你所使用的操作数所占的空间字节大小。

strlen

2.strlen()[计算字符串的长度]是一种函数。

'\0'作为终止符;

strlen的结果运行的时候才出来(不是编译期求值),是计算字符串长度的。

其参数必须是字符型指针(char*)。

头文件为#include<string.h>

size_t strlen(const char *str)//size_t()

 

以下是一些具体的实例(vs2013 设置为32位):

int main()
{
    char *p = "hello";
    char arr1 []= "hello";
    char arr2[] = { 'h', 'e', 'l', 'l', 'o' };
    printf("%d\n", sizeof( p));
    //结果4,因为指针变量的所占空间大小仅仅和操作系统位数有关32-4,64-8
    printf("%d\n", sizeof(arr1));
    //结果6,字符串默认以\0结尾,sizeof()包含\0的计算
    printf("%d\n", sizeof(arr2));
    //结果为5,因为为字符型表示,并不含有\0(仅仅字符串有\0)
    printf("%d\n", strlen( p));
    //结果为5,strlen求的是字符串的长度,不包含\0
    printf("%d\n", strlen(arr1));
    //结果为5,strlen求的是字符串的长度,不包含\0
    printf("%d\n", strlen(arr2));
    //因为字符型不包含\0,但字符串需要找到\0才可结束,所以在'o'之后继续向后读取直到找到\0,所以是一个随机值

 

posted @ 2022-08-18 23:32  Jervey  阅读(249)  评论(0编辑  收藏  举报