有個疑惑的題目(看內容) |
尚未結案
|
bcb902146
一般會員 發表:67 回覆:33 積分:22 註冊:2002-07-20 發送簡訊給我 |
||||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
C/C++ 是不會檢查陣列範圍的,檢查陣列範圍是程式設計師要作的事而不是 compiler,這點,請您一定要牢記,要不,就請您用別的語言。
當然,在 BCB 中也許會幫你找出可能的錯誤,但事實上,並不是所有都找得出來,有些可能要在執行時才會發生。
例如:
void Sub1(int *pData) { for(int i=0;i<10000;i ) pData[i]=i; } void Sub2(void) { int Array[100]; Sub1(Array); }以上的程式應該不會有錯(應該吧) 原因是對 ><>< src="http://www.taconet.com.tw/dllee/gif/dlleebn.gif"> C及指標教學
http://coolsite.to/dllee | 介紹Shells
http://coolsite.to/ushells | |
引言: int pointer[101],int i; for (i=0;i<=101;i ) { pointer[i]=-1; } 很奇怪 pointer陣列範圍不是0到100嗎 為什麼0~101執行無誤(i=0;i<=101;i ) 我改成(i=0;i<=104;i )編譯器就找出錯誤 這是怎麼回是阿你確定 (i=0; i<=101; i ) 執行無誤嗎?? 建議你把以上程式碼寫在一個 function 裡面 (假設 function name 為 Test1(void); 然後在另外的 function 裡面加入以下程式碼 for(int i=0; i<10; i ) { Test1(); } 猜猜看~~會不會 Access Violation 呢??
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |