全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1482
推到 Plurk!
推到 Facebook!

動態宣告陣列後,使用指標與不使用指標所取出來的值怎麼會不一樣?

答題得分者是:system72
membermember
一般會員


發表:1
回覆:2
積分:0
註冊:2007-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-16 10:54:44 IP:125.231.xxx.xxx 訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> // StringGrid->ColCount = 5 // "StringGrid" 與 "StringGrid1" 是不一樣的兩個元件 //程式碼片段一 int **p = cArrProject; for( int iCol = 0 ; iCol < StringGrid->ColCount ; iCol ) { for( int iRow = 0 ; iRow < 200 ; iRow ) { StringGrid1->Cells[iCol][iRow 1] = *(*(p iRow) iCol); <= 使用指標 } } //程式碼片段二 for( int iCol = 0 ; iCol < StringGrid->ColCount ; iCol ) { for( int iRow = 0 ; iRow < 200 ; iRow ) { StringGrid1->Cells[iCol][iRow 1] = iArrProject[iCol][iRow]; <= 不使用指標 } } </textarea> 兩段程式碼都是取出陣列中的值並打印在 StringGrid1 上 可是兩段程式碼所印出來的值卻不盡相同 使用指標所取出來的值和預期中的相同 不使用指標取值, 卻總是多出一行26 這是我的邏輯錯誤嗎? 還是有我沒注意到的地方呢? 附加檔內 p.jpg 使用指標所印出來的結果 np.jpg 不使用指標所印出來的結果
system72
中階會員


發表:15
回覆:114
積分:55
註冊:2005-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-16 13:22:05 IP:219.80.xxx.xxx 訂閱
  • // StringGrid->ColCount = 5
  • // "StringGrid" 與 "StringGrid1" 是不一樣的兩個元件
  • //程式碼片段一
  • int **p = cArrProject;


  • StringGrid1->Cells[iCol][iRow 1] = *(*(p iRow) iCol); <= 使用指標




  • StringGrid1->Cells[iCol][iRow 1] = iArrProject[iCol][iRow]; <= 不使用指標


  • 如果你說 使用指標正確,

    那,我猜,也許 下面這改成 iArrProject[ iRow ] [iCol ]; 看看.
  • 編輯記錄
    system72 重新編輯於 2007-08-16 13:28:17, 註解 無‧
    membermember
    一般會員


    發表:1
    回覆:2
    積分:0
    註冊:2007-02-01

    發送簡訊給我
    #3 引用回覆 回覆 發表時間:2007-08-16 13:51:26 IP:125.231.xxx.xxx 訂閱
    iArrProject 是個 5*200 的整數陣列
    如果把 iArrProject[iCol][iRow]; 改成 iArrProject[iRow] [iCol];
    不就成了200*5了嗎^^
    很明顯的超出範圍

    令我感到訝異的是
    如果陣列是 6*200
    多印出來的那行就會變成30
    7*200 => 34...以此類推( 因為是整數型態, 所以每次 4? )
    系統時間:2024-05-02 15:09:38
    聯絡我們 | Delphi K.Top討論版
    本站聲明
    1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
    2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
    3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!