當前位置:成語大全網 - 書法字典 - C語言如何實現結構的深度復制?

C語言如何實現結構的深度復制?

可以使用memcpy。例如,您可以創建壹個結構sortbook【1000】來保存排序結果,並將書中的第I個元素分配給sort book中的第J個元素。

memcpy(amp;排序簿【j】,ampbook【I】,sizeof(struct book);

您需要# include

功能原型

void * memcpy(void * dest,const void *src,size _ t n);

功能

將src指向的地址為起始地址的連續n字節數據復制到destin指向的地址為起始地址的空間中。

頭文件

# include & ltstring.h & gt

返回值

函數返回壹個指向目標的指針。

解釋

由1.source和destin指示的內存區域不能重疊,該函數返回壹個指向destin的指針。

2.與strcpy相比,memcpy在遇到“\0”時不會結束,但它肯定會完成n個字節的復制。

Memcpy用於內存復制,您可以使用它復制任何數據類型的對象,並且可以指定副本的數據長度;

示例:

char a【100】,b【50】;

memcpy(b,a,sizeof(b));//註意,如果使用sizeof(a),B的內存地址將溢出。

Strcpy只能復制字符串,當遇到“\0”時它將結束復制;示例:

char a【100】,b【50】;

strcpy(a,b);

3.如果目標數組destin本身已經有數據,在執行memcpy()後,原始數據將被覆蓋(最多n個)。如果要追加數據,應該在每次執行memcpy後將目標數組地址增加到要追加數據的地址。

//註意,source和destin都不壹定是數組,可以使用任何可讀和可寫的空間。