由于我经常忘了strlen和sizeof的区别,所以在分享的同时自己也复习一下。
1.sizeof(单目运算符,不用包含头文件,是无符号整数类型)
1.使用sizeof查看数据类型占空间大小
printf("sizeof(char): %d\n", sizeof(char)); sizeof(char): 1
注意:sizeof(a)是多少要看他的变量类型
int a=1; printf("%d",sizeof(a)); 输出4,就算a=4或其他,只要他的变量类型位int,输出永远是4 short int a=1; printf("%d",sizeof(a)); 输出2
2.若为数组时
int a[3]={1,2,3} printf("%d",sizeof(arr));//此时的arr代表整个数组,数组里元素为int型,3*4=12 输出12 printf("%d",sizeof(arr[0])); 输出4 printf("%d",sizeof(arr+0));//注意,这很容易搞混,和上一个不一样,这表示的是数组首元素地址所占内存 输出为4(32位)或8(64位)
2.strlen(char *...),需被头文件<string.h>包含,用来计算字符串长度
两者最大的区别,sizeof()处理字符串时,包含"\0",而strlen遇"\0"就停止且长度不包含"\0";
char arr2[] = "hello"; printf("sizeof(arr2): %d\n", sizeof(arr2)); printf("strlen(arr2): %d\n", strlen(arr2)); 输出 sizeof(arr2): 6 strlen(arr2): 5
再注意,sizeof()遇'\0'不停止且包含'\0'
#include<stdio.h> int main() { char a[5]={'w','\0','w','e','\0'}; printf("%ld",sizeof(a)); return 0; } 输出 5
~~虽然我走得很慢,但绝不停止前行的脚步!加油!伙伴们!