sizeof( )與strlen( )測陣列的差異分析
阿新 • • 發佈:2019-01-04
2、對兩個陣列a和b進行如下初始化
char a[]=“ABCDEF”; char b[]={ ‘A’,’B’,’C’,’D’,’E’,’F’};
陣列長度如何判斷?
#include<stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char a[]="ABCDEF";
char b[]={ 'A','B','C','D','E','F'};
int i = 0, j = 0;
int len_i,len_j;
i = sizeof (a);
len_i = strlen(a);
j = sizeof(b);
len_j = strlen(b);
printf("i = %d;len_i = %d\n",i,len_i);
printf("j = %d;len_j = %d\n",j,len_j);
return 0;
}
/***********************************************************
測試結果:
i = 7;len_i = 6
j = 6;len_j = 6
說明:sizeof(a)測出來要多一個‘\0’.
sizeof()返回的是變數聲明後所佔的記憶體數,不是實際長度,此外sizeof不是函式,僅僅是一個取位元組運算子,strlen是函式。
strlen()計算給定字串的長度,不包括'\0'在內.
*************************************************************/