//数组
char str[20000]="0123456789";
int a=strlen(str); //a=10
int b=sizeof(str); //而b=20000
char ss[] = "0123456789";
cout << sizeof(ss) << endl; //结果 11 ===》ss是数组,数组大小是11(\0也占一位)
cout << sizeof(*ss) << endl; //结果 1 ===》*ss 是第一个字符
int a[10]
sizeof(a) //结果是40
//函数参数为指针或者数组,数组传递进去退化为指针,sizeof不能测出传进去的数组大小
//指针
char* ss = "0123456789";
sizeof(ss) //结果 4 char*类型,所以是4
sizeof(*ss) //结果 1
strlen(ss) // 10
char aa[200]={'\0'};
cout<<strlen(aa)<<endl; //0
char Array[2000] = {'0'}; //这样初始化 第二位默认为\0
sizeof(Array) //2000
char *p = Array;
strlen(p) // 1
sizeof(p)// 4
char * p=new char[6];
sizeof(p) //4 sizeof指针
//结构体
class X
{
int a;
int b;
char c;
};
X x;
cout << sizeof(x); //12 计算结构体x占的内存大小, 内存自动补齐
//sizeof返回变量占的空间 传递数组名字就返回数组占的空间,传递指针相当于返回指针变量占的空间
//strlen返回字符个数 传递指针传递数组都从第一位开始计数 找到\0为止 不算\0
参考: