strlen和sizeof的区别

strlen 和 sizeof 区别

区别

  1. strlen 是一个库函数,而 sizeof 是一个运算符
  2. sizeof 计算的是变量或者类型所占用的内存字节数,而 strlen 计算的是字符串中字符的个数
  3. sizeof 可以用于任何类型的数据,而 strlen 只能计算以 '\0' 结尾的字符串

代码示例

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    char msg[100] = "hello world";
    printf("strlen(msg):%zu sizeof(mgs):%lu\n", strlen(msg), sizeof(msg));

    char msg_1[] = "hello world";
    printf("strlen(msg_1):%zu sizeof(msg_1):%lu\n", strlen(msg_1), sizeof(msg_1));

    return 0;

}
  1. 结果
strlen(msg):11 sizeof(mgs):100
strlen(msg_1):11 sizeof(msg_1):12
  1. 解释
  • msg[100], 开辟一个100字节的内存大小空间,存储 11 个字节大小的字符串,所以字符串长度为 11,strlen 结果是 11, sizeof 结果是 100
  • msg1[], 开辟一个空间存储字符串,具体大小由编译器计算,所以实际开辟 12 个字节大小的空间,存放 11 个字节长度的字符串,故 strlen 结果是 11,sizeof 结果是 12. 相差的这个一字节,存储的就是 C 风格字符串表示字符串结尾的标识符, '\0'
posted @ 2019-09-22 10:53  王清河  阅读(18539)  评论(0编辑  收藏  举报