1、char* ss = "0123456789";
sizeof(ss) 结果4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果1 ===》*ss是第一个字符 。
2、char ss[] = "0123456789";
sizeof(ss)结果11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果1 ===》*ss是第一个字符 。
3、char ss[100] = "0123456789";
sizeof(ss)结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前。
4、int ss[100] = "0123456789";
sizeof(ss) 结果400 ===》ss表示再内存中的大小100×4
strlen(ss) 错误==》strlen的参数只能是char* 且必须是以''\0''结尾的。
5、char q[]="abc"; char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p); 结果是 4 3 3 2。
6、class X
{
inti; int j; char k;
};
X x;
cout<<sizeof(X)<<endl; 结果12 ===》内存补齐
cout<<sizeof(x)<<endl; 结果12 同上
7、int a=100
sizeof(char)*a 怎么理解?结果100 100个char 类型占用的字节数.初看*还以为是指针呢,原来是乘号。这样就很好理解了。
sizeof(char)求字符型的长度啊。乘以100就100个char类型占用的字节数。
8、sizeof(char *)=4;sizeof(int *)=4 sizeof(double *)=4; 怎么指针都一样?
因为any指针都是一个long型值
在32位机上,所有的指针都是4字节的 (指针保存地址,为int型)
char *p="ab";
问sizeof(*p) 是多少?
请高人详细指点,我是底层软件工程师.
sizeof(*p)是1,因为p是指向字符串的指针,
*p是a,所以sizeof(*p)是sizeof(a)的意思,
所以是1 。而sizeof(p)是4,因为p是字符型的指针,它存放的是字符串的地址,既然是存放一个地址,
那么就和int什么的一样,是四个字节
sizeof(char *)=4;sizeof(int *)=4 sizeof(double *)=4;
怎么指针都一样?
因为any指针都是一个long型值
在32位机上,所有的指针都是4字节的 (指针保存地址,为int型)
char *p="ab";
问sizeof(*p) 是多少?
请高人详细指点,我是底层软件工程师.
sizeof(*p)是1,因为p是指向字符串的指针,
*p是a,所以sizeof(*p)是sizeof(a)的意思,
所以是1 。而sizeof(p)是4,因为p是字符型的指针,它存放的是字符串的地址,既然是存放一个地址,
那么就和int什么的一样,是四个字节