Posted on 2007-06-20 19:39
MiweiDev 閱讀(1131)
評論(11) 編輯 收藏 引用 所屬分類:
C / C++Language
回溫C語言,發現這個關于內存的問題,請大家幫忙解釋~~
#include <iostream>
using namespace std;

int main()
{
char strArray[5] = "";
cout << "請輸入一個字符串(不要超過5個):" << endl;
gets(strArray);
puts(strArray);

return 0;
}
我定義的數組長度的5,strArray[5]是字符串類型的,本來只能存儲4個字符加上一個'\0',但是當我輸入的字符個數多于9個(包含9)的時候,才有提示錯誤出現,當然我知道是數組的越界那部分的內存不可讀,但是為什么我輸入從5到9之間的時候卻不報錯呢?
隨后我又把數組的大小調整到 15 , 但是此時輸入 17 個字符時才報錯,
然后我又改變了數組的大小變為10, 然后又實驗 結果我輸入13 個時才開始報錯!
誰能幫我解釋原因?
有關于這方面的書籍嗎?幫忙推薦幾本!THANKS!