先上代码,看个例子 对于不同的数据他们的大小分别是多少
#include<stdio.h>
#include<string.h>
int main()
{
char str[] = "123456";
char str2[10] = "123456";
printf("%d\n", sizeof(str));//7 字符串大小
printf("%d\n", sizeof(str2));//10 数组大小
printf("%d\n", strlen(str));//6 字符遇到\0结束
printf("%d\n", strlen(str2));//6 字符遇到\0结束
char *p = "123456";
printf("%d\n", sizeof(p));//4 //指针的大小
printf("%d\n", strlen(p));//6 //字符的长度
printf("%d\n", sizeof(*p));//1 //char指针步长为1
/*a = 0x7ffdc453cbb0 数组首地址
&a[0] = 0x7ffdc453cbb0
&a+1 = 0x7ffdc453cbd8 整个数组的大小
&a[0]+1 = 0x7ffdc453cbb4 一个元素的大小
*/
system("pause");
return 0;
}
总结一下
sizeof是关键字由编译器提供
strlen是库函数
sizeof可对任何数据进行计算
strlen只能对字符串进行计算