关于sizeof跟strlen的用法

关于sizeof和strlen的用法
不知道什么时候用sizeof什么时候用strlen

有人总结过吗?推荐一下,谢谢
------解决思路----------------------
这两个其实没有多大的联系。sizeof操作符一般用来计算某个类型或对象的大小,比如结构体,类或内置类型。
strlen是函数,专门用来计算字符串的长度,计算方法是从你提供的字符指针开始计算字符个数,直到遇见结束符'\0'。计算字符串长度就用strlen
------解决思路----------------------
完全不同的两个东西 
------解决思路----------------------
参考 http://www.cnblogs.com/carekee/articles/1630789.html
------解决思路----------------------
这个问题太多人总结过了。
1sizeof是关键字,strlen是函数
2sizeof是在编译时决定的,strlen是运行时计算的
3sizeof是编译器分配给变量的大小,strlen是遇到'\n'时的长度。
4sizeof可以对类型操作,strlen只能对数组或者指针名操作。
------解决思路----------------------
在《程序员面试宝典》(第4版)第55到57业对sizeof和strlen有详细的分析:(共有11条之多)

(1)sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

(2)sizeof是运算符,strlen是函数。

(3)sizeof可以用类型作参数,strlen只能用char*作参数,且必须是以'\0'结尾的。sizeof还可以用函数做参数,比如:

short f();
printf("%d\n",sizeof(f()));


(4)数组作sizeof的参数不退化,传递给strlen就退化为指针。

(5)大部分编译程序在编译的时候就把sizeof计算过了,是类型或者是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因:

char str[20] = "0123456789";
int a = strlen(str); //a=10;
int b = sizeof(str);//而b=20;


(6)strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,而不是类型占内存的大小。

未完~~~~



------解决思路----------------------
1、两者是不同的东西,sizeof用法更广
2、sizeof和strlen只有在处理字符串时会有相似点。关于sizeof跟strlen的用法
------解决思路----------------------
一个是关键字,一个是函数