sizeof()和 strlen()的区别 --- 个人笔记
在学习C语言和linux的时候,遇到了一些常见问题、题目,有些很简单,有些容易出错,本人水平有限,未免会出错,今天有时间,就将以前做的笔记,一一拿出来,写写blog。
sizeof()和 strlen()的区别?
首先sizeof()是C语言提供的一个运算符,不是函数!它的作用主要是获得一个类型
或者一个对象里面内容的空间大小。
strlen()是一个标准库函数函数,用于计算一个字符串的长度,但是不把字符 '\0'计算在内。
如char *buf="hello,world"
strlen(buf)=11
sizeof(buf)=4
看看:sizeof( 2 + 3.14 );// 3.14的类型为double,2也会被提升成double类型,所以等价于 sizeof( double );
再看看下面:
static inline void print_size(void)
{
char str[] = "hello";
char *pt = str ;
char *ptr= NULL;
void *p = malloc(100);
int i =10;
printf("sizeof str is %d\nstrlen of str is %d\n",sizeof(str),strlen(str));//6,5
printf("sizeof pt is %d\nstrlen of pt is %d\n",sizeof(pt),strlen(pt));//4,5
printf("sizeof ptr is %d\n",sizeof(ptr));//4
printf("sizeof p is %d\n",sizeof(p));//4
printf("sizeof i is %d\n",sizeof(i));//4
return ;
}