sizeof和strlen

43 篇文章 0 订阅
17 篇文章 0 订阅

sizeof和strlen

sizeof 和 strlen返回的都是字节数,一个重要的区别在于,

strlen返回的是字符串的长度(不包含’\0’),其参数只能是char*

sizeof 返回的是对象或类型,所占的内存字节数,所以sizeof需要考虑’\0’。sizeof的参数可以是数组、字符串、对象等等。

#include <iostream>
#include <string.h>

using namespace std;

int main() {


    /* 第一组 */
    char* s1 = "0123456789";

    // s1是字符指针,指向字符串常量的指针,32位机上的结果是4,64位是8
    cout << sizeof(s1) << endl; 

    // *s1是第一个字符,结果为1
    cout << sizeof(*s1) << endl; // 1

    // strlen 返回字符串的长度(不包含结尾的'\0')
    cout << strlen(s1) << endl; // 10

//    cout << strlen(*s1) << endl; // 编译报错,strlen的参数只能是char* 不能是char 



    /* 第二组 */
    char s2[] = "0123456789";

    // s2是数组,结尾默认补'\0',所以是10+1
    cout << sizeof(s2) << endl; // 11

    // *s2 是第一个字符,结果为1
    cout << sizeof(*s2) << endl; // 1

    // s2是数组,返回数组的长度10
    cout << strlen(s2) << endl; // 10 




    // 第三组
    char s3[100] = "0123456789";

    // s3表示在内存中预分配的大小,所以是100 * 1
    cout << sizeof(s3) << endl; // 100

    // 返回数组的长度10
    cout << strlen(s3) << endl; // 10



    // 第四组
    int s4[100] = {0,1,2,3,4,5,6,7,8,9,};

    // s4在内存中分配的大小是 100 * 4
    cout << sizeof(s4) << endl; // 400

//    cout << strlen(s4) << endl; // 编译报错,strlen的参数只能是char* 不能是int  

    return 0;
}

这里写图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值