編程小白C語言練習8

題目要求

有以下程序
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

和分析的結果一模一樣的 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章