看板 C_and_CPP 關於我們 聯絡資訊
有點像是抽球 取後不放回 假設原本有球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
james732:我猜是 sizeof 的用法有問題 05/17 04:15
james732:sizeof 只會回傳指標的大小而已 05/17 04:18
sosokill:推樓上 我記得這樣傳近去sizeof出來的值永遠都是4 05/17 04:38
james732:不見得是4 要看 pointer 的長度決定 4 是 32 位元系統 05/17 04:39
sosokill:哦 我是指int 因為之前也遇過這個問題 有try了一下XD 05/17 04:40
sosokill:感謝更正XD 05/17 04:40
james732:說歸說 其實我也沒寫過 32 位元以外的系統...XDDD 05/17 04:42
sunkill:delete 傳指標到涵數是傳位址 05/17 07:03
嗯 瞭解 感謝大大 ※ 編輯: ffflllyyying 來自: 58.115.21.48 (05/17 10:08)
jerohands:第一次看到這樣寫勒 delete[] a,b,d; 05/17 10:10
sunkill:你要一個一個 delete 不然後面的都沒效 05/17 16:02