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

關於char的問題?

尚未結案
benson5033
一般會員


發表:44
回覆:47
積分:18
註冊:2004-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-15 17:34:45 IP:61.230.xxx.xxx 未訂閱
當我定義一個字元 char work[10]; 而我指定work[12]='m'; 這樣不是超過work的大小嗎? 那為什麼不用有錯誤訊息呢???    如果我定義了一個struct:     
 
 struct aaa{
  char work[10]; 
  char time[10];
 };
 aaa b1;
 b1.work[12]='m'; 
 
而此時變成了b1.time[2]的值是 m ,如何才能使m不會跑到b1.time[2]中呢?
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-15 20:36:37 IP:221.169.xxx.xxx 未訂閱
c/c 在處理陣列的時候並不會幫你檢查陣列的長度 如果你要防呆的話,可以使用string,給予錯誤的索引值時,他會產生一個error exception給你
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-16 08:06:53 IP:211.75.xxx.xxx 未訂閱
因為aaa這個struct總共宣告了20Byte的連續空間 而前面10Byte命名為work,接續著後面10Byte命名為time, 又如justdo 所說..."c/c 在處理陣列的時候並不會幫你檢查陣列的長度" 所以你取work[12]會得到time[2]的位置,但他並不違法. 但如果你取work[20]就會違法.
系統時間:2024-05-18 18:28:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!