線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1136
推到 Plurk!
推到 Facebook!

有個疑惑的題目(看內容)

尚未結案
bcb902146
一般會員


發表:67
回覆:33
積分:22
註冊:2002-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-14 11:57:47 IP:61.70.xxx.xxx 未訂閱
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 )編譯器就找出錯誤 這是怎麼回是阿 劉維翔
------
劉維翔
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-14 16:58:57 IP:203.204.xxx.xxx 未訂閱
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
------
http://www.ViewMove.com
ubong
一般會員


發表:2
回覆:42
積分:23
註冊:2002-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-05 12:20:36 IP:61.216.xxx.xxx 未訂閱
很奇怪 pointer陣列範圍不是0到100嗎 為什麼0~101執行無誤(i=0;i<=101;i ) 我改成(i=0;i<=104;i )編譯器就找出錯誤 這是怎麼回是阿 =========================================================== 可能在pointer[102]的記憶體未被使用,或是不會影響到程式碼,而[105] 就可能把東西寫到程式碼的位址而影響程式的執行了,在Dos時期有時就會導致 當機呢! ubong
------
ubong
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-06 22:07:25 IP:61.221.xxx.xxx 未訂閱
引言: 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 呢??
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-04-16 21:40:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!