如何抓取二維陣列裡的值............. |
尚未結案
|
skkyo
一般會員 發表:4 回覆:1 積分:1 註冊:2004-11-01 發送簡訊給我 |
|
i_am_jcl
一般會員 發表:3 回覆:9 積分:2 註冊:2002-04-15 發送簡訊給我 |
void __fastcall TForm1::Button1Click(TObject *Sender) { int a[3][3]={{3,2,2},{2,1,3},{1,2,3}} ; int i , j ; int *value ; int count ,max_value = 0, max_count = 0 ; for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i ) { value = ((int *)&a i) ; count = 0 ; for(j=0;j< (sizeof(a)/sizeof(a[0][0])) ; j ) { if( *value == *((int *)&a j)) count ; } if(count > max_count) { max_value = *value ; max_count = count ; } } for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i ) { *((int *)&a i) = max_value ; } ShowMessage("Set Value = " IntToStr(max_value) ) ; } |
skkyo
一般會員 發表:4 回覆:1 積分:1 註冊:2004-11-01 發送簡訊給我 |
引言:void __fastcall TForm1::Button1Click(TObject *Sender) { int a[3][3]={{3,2,2},{2,1,3},{1,2,3}} ; int i , j ; int *value ; int count ,max_value = 0, max_count = 0 ; for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i ) { value = ((int *)&a i) ; ->這裡是什麼意思? count = 0 ; for(j=0;j< (sizeof(a)/sizeof(a[0][0])) ; j ) { if( *value == *((int *)&a j)) ->還有這邊 count ; } if(count > max_count) { max_value = *value ; max_count = count ; } } for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i ) { *((int *)&a i) = max_value ; } ShowMessage("Set Value = " IntToStr(max_value) ) ; } |
i_am_jcl
一般會員 發表:3 回覆:9 積分:2 註冊:2002-04-15 發送簡訊給我 |
value = ((int *)&a i) ;
將指標value指到 由陣列A的位址開始的第i個的整數的位址
依照上面迴圈敘述 for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i )
可以預期 value 將依序指到 &a[0][0] , &a[0][1] , &a[0][2] , ... ,&a[2][0], &a[2][1] , &a[2][2] 白話一點的說法就是 : 假設A的記憶體位址是X , 那value 將依序是 X,X 4 ,X 8 , X 12 , .... , X 32 (ps : sizeof(int) = 4 )
參考圖
| a[0][0] | ----------> X
| a[0][1] | ----------> X 4
| a[0][2] | ----------> X 8
| a[1][0] | ----------> X 12
| a[1][1] | ----------> X 16
| a[1][2] | ----------> X 20
| a[2][0] | ----------> X 24
| a[2][1] | ----------> X 28
| a[2][2] | ----------> X 32 那*value的值依照迴圈跑下來的結果 依序將會對應到 a[0][0] , a[0][1], a[0][2] , a[1][0] , a[1][1] , a[1][2] , a[2][0],a[2][1],a[2][2] =====================================================================
if( *value == *((int *)&a j))
參照上面的解釋 這行就很單純了
將參考值*value 與 "目前選到的值" 作比較
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |