c语言 sizeof 和 strlen

传送门:[https://blog.csdn.net/follow_blast/article/details/79084726]

strlen:用来计算字符串的长度,遇到第一个NULL('\0')为止’。

sizeof:用来计算变量或者对象、类型所占字节的多少,占内存的大小

需要注意的是sizeof会把'\0'计算进去

strlen没有

对于数组,sizeof是计算该数组所占字节数,而不是数组元素个数。

strlen而言,不管是数组还是指针,只要遇到第一个‘\0’就为止

sizeof是一个关键字不是函数,发生在编译时刻,所以可以用作常量表达式。

    sizeof返回的值表示的含义如下:
   1. 数组——编译时分配的数组空间大小;

    2.指针——存储该指针所用的空间大小(在32位系统是4,在64系统是8)

    3.类型——该类型所占的空间大小;

    4.对象——对象的实际占用空间大小;

    5.函数——函数的返回类型所占的空间大小。函数的返回类型不能是void

strlen是一个函数,并且所传入的参数必须是char*,发生在运行时刻

sizeof只关心这块内存的大小,不关心这块内存存放了什么数据,strlen只关心这块内存存放的数据,不关心这块内存的大小,直到遇到第一个NULL为止。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    char *s1 = "hello";
    char s2[] = "hello";
   // *s1 = 'p';
    cout << *s1 << endl;
    cout << "sizeof s1 = " << sizeof(s1) << endl;
    cout << "sizeof s2 = " << sizeof(s2) << endl;
    
    cout << "strlen s1 = " << strlen(s1) << endl;
    cout << "strlen s2 = " << strlen(s2) << endl;
    cout << s2[0] << " " << s2[1] << " " << s2[2] << endl;
    
    return 0;
}

  

posted @ 2019-10-15 16:45  ChunhaoMo  阅读(127)  评论(0编辑  收藏  举报