1、sizeof与strlen的区别:
sizeof是运算符,可以以类型、函数、做参数 。strlen是函数,只能以char*(字符串)做参数。而且,要想得到的结果正确必须包含 ‘\0’。
sizeof:值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。sizeof不能用来返回动态分配的内存空间的大小。
当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
strlen:是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
它的功能是:返回字符串的长度。该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
char str[10]=“12345”
char *str1=“12345”
char str2[]=“12345”
strlen(str)=5 //字符数,不算‘\0’
sizeof(str)=10
strlen(str1)=5
sizeof(str1)=4 //c语言中一个指针占四字节
strlen(str2)=5
sizeof(str2)=6 //’\0’也要算在内
2、数组与指针的区别于联系