作者ffflllyyying (test)
看板C_and_CPP
標題[問題] 陣列刪除部分值
時間Sun May 17 04:14:27 2009
有點像是抽球 取後不放回
假設原本有球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