2016-10-10 186 views
0

我的結構數組有5個插槽複製一個結構陣列到另一個結構數組,它是較小

struct router* router[5]; 

比方說裏面有他們的元素,然後我讓

router[3] = NULL; 

是否有可能重新排列數組,使路由器[4]中的元素移動到路由器[3],路由器[5]移動到路由器[4]等。

+0

當然,這是可能的。只需使用賦值運算符或'memmove'。 'route [3] = router [4];路由器[4] = NULL;'。或者如果你真的想要問一些不同的東西,請澄清你的問題。 – kaylum

+0

由於您可能需要使代碼對'NULL'條目具有彈性,您可能會考慮這樣做,並將NULL留在陣列的中間。 – jxh

+0

還要注意,沒有'router [5]'元素作爲'router [4]'是數組中最後一個有效元素。 – kaylum

回答

1

試試這個

void delete(struct router** router, int which, int size) { 
    int i; 
    // If these pointers have no other references to them then 
    // Then you should free the one being deleted at this point 
    for(i = which; i < size - 1; i++) { 
     router[i] = router[i + 1]; 
    } 
    router[i] = NULL; 

}