[問題] 陣列刪除部分值

看板C_and_CPP (C/C++)作者 (test)時間16年前 (2009/05/17 04:14), 編輯推噓0(0010)
留言10則, 4人參與, 最新討論串1/1
有點像是抽球 取後不放回 假設原本有球a = 1 2 3 4 5 6 7 8 號 刪除d球 d = 2 5號 則剩下的球為b = 1 3 4 6 7 8號 #include <stdio.h> int main(){ int i,f=8,g=2,h=f-g; int *a = new int[f]; int *d = new int[g]; int *b = new int[h]; for(i=0; i<f; i++) a[i] = i+1; d[0]=2;d[1]=5; dMetrix_fun(d, a, b, f, g, h); for(i=0;i<h;i++) printf("%d",b[i]); delete[] a,b,d; return 0; } void dMetrix_fun(int *d, int *a, int *b, f, g, h){ int i,j,k=0; for(i=0; i<; i++){ for(j=0; j<g; j++) if(i==d[j]-1) k++; b[i] = a[i+k]; } } 請問是哪裡寫錯? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.21.48

05/17 04:15, , 1F
我猜是 sizeof 的用法有問題
05/17 04:15, 1F

05/17 04:18, , 2F
sizeof 只會回傳指標的大小而已
05/17 04:18, 2F

05/17 04:38, , 3F
推樓上 我記得這樣傳近去sizeof出來的值永遠都是4
05/17 04:38, 3F

05/17 04:39, , 4F
不見得是4 要看 pointer 的長度決定 4 是 32 位元系統
05/17 04:39, 4F

05/17 04:40, , 5F
哦 我是指int 因為之前也遇過這個問題 有try了一下XD
05/17 04:40, 5F

05/17 04:40, , 6F
感謝更正XD
05/17 04:40, 6F

05/17 04:42, , 7F
說歸說 其實我也沒寫過 32 位元以外的系統...XDDD
05/17 04:42, 7F

05/17 07:03, , 8F
delete 傳指標到涵數是傳位址
05/17 07:03, 8F
嗯 瞭解 感謝大大 ※ 編輯: ffflllyyying 來自: 58.115.21.48 (05/17 10:08)

05/17 10:10, , 9F
第一次看到這樣寫勒 delete[] a,b,d;
05/17 10:10, 9F

05/17 16:02, , 10F
你要一個一個 delete 不然後面的都沒效
05/17 16:02, 10F
文章代碼(AID): #1A3nwaru (C_and_CPP)
文章代碼(AID): #1A3nwaru (C_and_CPP)