1. 例子说明
char a[] = "hello world";
char b[100] = "hello world";
char *p = a;
/* sizeof */
printf("%d \n",sizeof(a)); //12字节 由于数组最初没有定大小,由具体值来填充包括'\0'结束符
printf("%d \n",sizeof(b)); //100字节 这个数组开始预分配100,所以它的大小就是100*1=100
//注意这两个的区别!!!
printf("%d \n",sizeof(p)); //4字节 指针大小为4字节 (32位系统下)
char q1[] = "a\n"; sizeof (q1)=3;// 因为\n 算作一位
/* strlen*/
printf("%d \n",strlen(a)); //11字节 不包括‘\0’结束符
printf("%d \n",strlen(b)); //11字节 strlen仅仅计算字符串的实际大小
2. 总结
- sizeof 是运算符;strlen 是函数。
- sizeof 可以用类型做参数;strlen 只能用char *做参数,而且必须是以"\0"结尾的。
- sizeof 编译时执行;strlen 运行时计算出来,计算字符串的长度
- sizeof包括\0,strlen不包括\0