sizeof是运算符 strlen是函数
sizeof不算函数调用
strlen*(char*)函数求的是字符串的实际长度 遇到第一个‘\0’ 返回计数值
sizeof 返回的是变量声明后所占的内存数 不是实际长度
sizeof 可以用类型做参数 strlen只能用char*做参数 而且必须以‘\0’结尾
sizeof 后如果是类型必须加括弧 变量名可以不加
sizeof 是判断数据类型长度的关键字
sizeof 是c/c++中的一个操作符,其作用是返回一个对象或者类型所占的内存字节数。
其返回值类型为size_t,在头文件stddef.h中定义。这个值取决于编译系统。
它的值之和最终类型有关,
c99规定 函数、不能确定类型的表达式以及位域成员不能被计算sizeof值,
例如sizeof(foo);//error
void foo2( )
{
}
sizeof(foo2());//error
struct S {
unsigned int f1;
unsigned int f2;
unsigned int f3;
};
sizeof(S.f1);//error
sizeof 的计算发生在编译时刻 可以被当作常量表达式使用(最新的c99可以在运行时刻计算)
基本数据类型的sizeof在不同系统可能不同
指针相当于计算机内部地址总线的宽度 32位计算机中指针变量的返回值是4 64位中是8
数组的sizeof相当于数组所占的内存字节数
附 作业
char c=128;
// 1000 0000
unsigned char uc=128;
// 1000 0000
unsigned short us=0;
// 0000 0000 0000 0000
us = c+uc;
// 1111 1111 1000 0000
// 0000 0000 1000 0000
// 0000 0000 0000 0000
printf("%x\n",us);
// 0x0
us=(unsigned char)c +uc;
// (unsigned char)c 0000 0000 1000 0000
// 0000 0000 1000 0000
// 0000 0001 0000 0000
printf("%x\n",us);
// 0x100
us = c+(char)us;
// 1111 1111 1000 0000
// 1111 1111 1000 0000
// 1111 1111 0000 0000
printf("%x\n",us);
// 0xff00
}