sizeof和strlen

sizeof和strlen区别:

  • sizeof 是一个运算符,用于计算变量或类型所占用的内存字节数,sizeof 会将空字符 ‘\0’ 计算在内,而 strlen 不会将空字符 ‘\0’ 计算在内。
  • strlen 是一个函数,用于计算字符串中字符的个数,但不包括结束字符(即 null 字符,sizeof 会计算到字符串最后一个空字符 ‘0’ 并结束,而 strlen 如果遇到第一个空字符 ‘\0’ 的话就会停止并计算遇到的第一个空字符 ‘\0’ 前面的长度。

示例

    char arr1[] = {'a','b','c','d','e','\0'};
    char arr2[] = { 'a','b','c','d','e'};
    char arr3[] = "abcde";
    char arr4[8] = "abcde";
    printf("arr1-strlen=%d\n", strlen(arr1));
    printf("arr1-sizeof=%d\n", sizeof(arr1));   
    printf("arr2-strlen=%d\n", strlen(arr2));
    printf("arr2-sizeof=%d\n", sizeof(arr2));    
    printf("arr3-strlen=%d\n", strlen(arr3));
    printf("arr4-sizeof=%d\n", sizeof(arr4)); 
    printf("arr4-strlen=%d\n", strlen(arr4));

在这里插入图片描述

未指定字符数组的长度用strlen计算会出现什么结果

如果未指定字符数组的长度,那么在使用 strlen 函数计算字符串长度时,会出现随机值。这是因为 strlen 函数在计算字符串长度时,遇到 ‘\0’ 字符时会停止计算,而未指定字符数组的长度时,编译器会自动在数组末尾添加一个 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度。如果未添加 ‘\0’ 字符,则 strlen 函数会一直计算下去,直到遇到内存中的 ‘0’ 字符才停止计算,从而导致随机值的出现 。

指定字符数组的长度用strlen计算会出现什么结果

如果指定了字符数组的长度,那么在使用 strlen 函数计算字符串长度时,会返回指定的长度。这是因为 strlen 函数在计算字符串长度时,遇到 ‘0’ 字符时会停止计算,而在指定了字符数组的长度后,编译器会自动在数组末尾添加相应个数的 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度 。

字符小于字符数组的长度用strlen计算会出现什么结果

如果字符数组的长度大于字符的数量,那么使用 strlen 函数计算字符串长度时,会返回指定的长度。这是因为 strlen 函数在计算字符串长度时,遇到 ‘0’ 字符时会停止计算,而在指定了字符数组的长度后,编译器会自动在数组末尾添加相应个数的 ‘\0’ 字符,以便 strlen 函数能够正确地计算字符串长度 。

char arr2[] = { ‘a’,‘b’,‘c’,‘d’,‘e’}和char arr3[] = "abcde"的区别

char arr2[] = { ‘a’,‘b’,‘c’,‘d’,‘e’} 和 char arr3[] = “abcde” 的区别在于,arr2 是一个字符数组,而 arr3 是一个字符串。在 C 语言中,字符串以 ‘\0’ 结尾,因此 arr2 的长度为 5,而 arr3 的长度为 6。sizeof 运算符返回整个数组所占用的内存字节数,因此 arr2 的大小为 5*sizeof(char),而 arr3 的大小为 sizeof(“abcde”)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值