1. sizeof计算字符的长度
strlen计算有效字符的长度
#include <stdio.h>
#include <string.h>
int main()
{
char cchar[]="Hello";
printf("sizeof :%d\r\n",sizeof(cchar));//结束标志也算上\0
printf("strlen :%d\r\n",strlen(cchar));
}
/************************************************************
sizeof :6
strlen :5
************************************************************/
上面的例子中未给cchar[]写入字节数 ,本来数组是空的然后将Hello写入其中
若提前给数组写入字节数会怎样?
#include <stdio.h>
#include <string.h>
int main()
{
char cchar[10]="Hello";
printf("sizeof :%d\r\n",sizeof(cchar));
printf("strlen :%d\r\n",strlen(cchar));
}
/******************************************************
sizeof :10
strlen :5
******************************************************/
由此可知:sizeof算的是整个字符空间的长度,而strlen算的还是有效字符的长度
sizeof计算指针变量会如何表示?
#include <stdio.h>
#include <string.h>
int main()
{
char cchar[10]="Hello";
printf("sizeof :%d\r\n",sizeof(cchar));
printf("strlen :%d\r\n",strlen(cchar));
//p是一个char*,sizeof在计算时得出的是计算机用多少个字节来表示一个地址,这里是8位表示一个地址
char * p="Hello";
printf("sizeof p :%d\r\n",sizeof(p));
printf("sizeof char* :%d\r\n",sizeof(char*));
printf("strlen p :%d\r\n",strlen(p));//计算的还是有效位数
return 0;
}
/***********************************************************************
sizeof :10
strlen :5
sizeof p :8
sizeof char* :8
strlen p :5
***********************************************************************/
sizeof p此时结果为 :8 与char * 结果一致,同理可证int * ,double * ,函数指针 结果一样,都表示用8个字节来表示地址