#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[10] = "Book";
cout<<sizeof(str)<<endl;
cout<<strlen(str)<<endl;
cout<<"Hello world"<<endl;
return 0;
}
//返回:10,4
strlen
是函数,在运行的时候才可以计算,参数必须是字符型指针(char *),且必须以 ‘\0’结尾。当数组名作为参数传入的时候,实际上数组已经退化为指针了。功能是返回字符串长度。sizeof
是运算符,在编译的时候计算好,用于计算数据空间的字节数,因此sizeof
不能用来返回动态分配的内存空间大小。sizeof
通常用于返回类型和静态分配对象,结构或者数组所占的空间,返回值跟对象,结构,数组所存储的内容没有关系。(1)数组---编译时分配的数组空间的大小,例子如上。
(2) 指针---存储该指针所用的空间大小,如:
char *str = "I am from China.";
//因为str存储的是一个字符指针,所以sizeof(str)是指针占用空间,为4B
(3)类型---返回该类型所占用空间大小。
(4)对象---返回对象实际占用空间大小。
(5)函数---函数返回的类型所占空间大小,且函数返回类型不能为void。
原文:https://www.cnblogs.com/Ivessas/p/14655149.html