2014-02-16 123 views
0

我在C以下結構:如何使用memmove與指針指針?

typedef struct { 
double value; 
char* name; 
} COMPONENT; 

而且我有一個指針以下矢量:

COMPONENT **list = malloc(sizeof(COMPONENT*)*100); 

這個列表包含了只有10球的組成結構,即使分配給100個元素,OK。現在,我想在第一個位置插入一個使用memmove的新COMPONENT:

memmove(list+sizeof(COMPONENT*), list, sizeof(COMPONENT*)*10); 
list[0] = new_element_ptr; 

但是,此操作不工作= [。我失去了所有其他的參考資料(列表[1],列表[2]等)。這是不同的,因爲它是一個結構,我的向量只有指針?

回答

3

這是你在找什麼:

memmove(list + 1, list, sizeof(list[0]) * 10); 

當加入的指針,你是不是增加字節偏移,要添加元素的個數。

+0

Humm this works!然後,如果我想把一個元素放在這個列表的特定索引中,就像這樣:size_t copy_size = sizeof(list [0])*(10 - where); memmove(list + where + 1,list + where,copy_size); list [where] = new_element_ptr; ?變量在這裏是指數 –

+0

@AndersonCarniel正確 –

+0

非常感謝你!我不知道C中的指針向量。重要的一課!謝謝! –