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; }