1.sizeof是类似于宏定义的特殊关键字,strlen是函数
2.sizeof a 也不能写成sizeof(a)
sizeof(int) ,但是不能写成sizeof int
3.sizeof(数组名),得到的是数组中元素的大小×4
sizeof(函数形参的数组名),此时的数组名退化为一个指针,所以是4
strlen(char类型的数组名),得到的元素的个数,例如 char a="123"; strlen(a)=3
strlen(非char类型的数组名),编译错误。
4.sizeof(指针变量) 得到的均是4,与指针的类型无关;
strlen(char类型的指针变量)均是从该地址开始,统计字符个数,知道遇到"\0"为止;
strlen(非char类型的指针变量)编译错误。
5. sizeof (函数的话) 返回的是函数返回值的类型大小,例如: int f() ; sizeof(f()) =4; char g(); sizeof(g())=1;
strlen不能这样子用;
6.sizeof在编译的时候就已经算出来了,所以可以用作数组的大小,例如: int a; int arry[sizeof a];
strlen 是在运行的时候计算出来的。
总结与20120926下午15:14