關於sizeof運算符和strlen()函數的個別區別分析
1、sizeof是運算符,strlen()是函數
2、sizeof可以用類型做參數,strlen()只能用char*做參數,且必須以‘\0’結尾。注意:strlen()算字符串長度的時候不包括'\n'。
3、sizeof還可以用函數做參數。
比如short fun();
printf("%d\n",sizeof(fun()));//輸出2
#include <stdio.h>
#include <stdlib.h>#include <string.h>
int main(void)
{
int c[20];
char a[30];
char *b=(char*)malloc(40*sizeof(char));
printf("char =%d\n",sizeof(char)); //char=1
printf("int =%d\n",sizeof(int)); //int=4
printf("a =%d\n",sizeof(a)); //a=30
printf("a[3] =%d\n",sizeof(a[3])); //a[3]=1
printf("a+6 =%d\n",sizeof(a+6)); //a+6=4
printf("b =%d\n",sizeof(b)); //b=4
printf("b+5 =%d\n",sizeof(b+5)); //b+5=4
printf("*(b+4) =%d\n",sizeof(*(b+4))); //*(b+4)=1
printf("*b =%d\n",sizeof(*b)); //*b=1
printf("c =%d\n",sizeof(c)); //c=80
printf("\'m\' =%d\n",sizeof('m')); //'m'=1
printf("\"m\" =%d\n",sizeof("m")); //"m"=2
char* ss="0123456789";
printf("sizeof(ss) =%d\n",sizeof(ss)); //sizeof(ss)=4 ss指向字符串常量的字符指針
//sizeof獲得的是一個指針所佔的空間
printf("sizeof(*ss) =%d\n",sizeof(*ss)); //sizeof(*ss)=1 *ss是第一個字符
printf("strlen(ss) =%d\n",strlen(ss)); //strlen(ss)=10 獲取字符串長度
short fun();
printf("sizeof(f())=%d\n",sizeof(fun())); //sizeof(f())=%d sizeof還可以用函數做參數
}