1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h>
4 void main() 5 { 6 char cArray[15]; 7 int i;
8 //memset(aa,0,15);
9 printf("%d %d/n",sizeof(cArray), strlen(cArray));
10 for(i=0;i<10;i++) 11 { 12 cArray[i] = '0'; 13 } 14 printf("%d %d/n",sizeof(cArray), strlen(cArray)); }
對於上面這段程序,應給學過 c 的人都應給能看懂。
我們知道,當定義一個變量時,我們應給她進行初始化的動作。當然除了系統會幫我們初始化的變量外(如全局變量,靜態變量或外部變量,系統會幫我們初始化成0,null)。對於局部變量,它是在一個堆或棧中如果我們不給它初始化,那我們再用它時就很難決定他的當前狀態,如上例,如果把第8行的代碼給註釋起來,那麼我們得到的strlen(aa)就是一個不確定的數字了。在c++中,如果一個class寫的很好的話,我們完全可以依賴他的構造函數來完成這個類中的各個屬性的初始化動作。其實,無論用什麼語言都一樣,作爲一個合格的程序員:你應該時時刻刻都能掌控代碼中的每一個變量的當前值,每一個函數的出入狀態。我們對變量進行初始化,也是爲了當我們第一次用它時也能預測出每一個欄位的確切值。養成定義變量就立刻初始化的習慣,使程序員的修養之一。