題目要求
有以下程序
main()
{ char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序運行後的輸出結果是?
思路分析
這個題考的是基礎,難度不大,不過比較考驗功底
strlen所作的是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'爲止,然後返回計數器值(長度不包含'\0')。
到題目裏來看,第一個'\0'之前只要'a','0',所以此時j應該等於2
在 C 語言中,sizeof() 是一個判斷數據類型或者表達式長度的運算符。簡單的說其作用就是返回一個對象或者類型所佔的內存字節數。
到題目裏面來看 sizeof(a),數組a佔7個字節,此時i應該等於7
擼寫代碼
#include<stdio.h>
#include<string.h>
int main()
{
char a[7]="a0\0a0\0";
int i,j;
i=sizeof(a);
j=strlen(a);
printf("i=%d j=%d ",i,j);
return 0;
}
驗證結果
那麼我們將數組a定義10個字節, 並且刪除第一個'\0',此時i應該爲10,j應該爲4
和分析的結果一模一樣的