<b>通用构造复制函数</b>[VC/C++编程]
本文“<b>通用构造复制函数</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在C/C++语言中,将一个组合数据范比方构造各个字段的值复制到另一个相同范例的构造中,可以将其对应字段赋值.这种办法关于各种复杂的构造如多字段构造、嵌套构造,就要写很多行赋值语句,并且假如本来的构造定义更改,程序代码就要随着更改,利用很不便利.本文给出了一个通用的构造复制函数.
假定构造的范例为STRUCT_TYPE.为了提高效率,用指针引入两个构造到函数中;为了通用,这两个指针用肆意指针.函数计划的动身点是,每个构造在内存中各字段持续存放,并且,每个字段可以分化中一个一个的字节.这样,复制构造时,可以让两个构造的对应的每个字节表示的值相等.于是,函数计划以下:
void struct_copy(
void *p_struct1, /*构造指针1*/
void *p_struct2, /*构造指针2*/
unsigned int struct_size /*构造范例长度,可以用sizeof(STRUCT_TYPE)代入*/
)
{
int count=0;
char *p_char1,*p_char2;
p_char1=(char *)p_struct1;
p_char2=(char *)p_struct2;
while(count!=struct_size)
{
*p_char1=*p_char2;
p_char1++;
p_char2++;
count++;
}
}
这个函数在PC机和康柏ALPHA小型机上利用效果不错.
有了这个函数,若有范例同为STRUCT_TYPE的两个构造struct1和struct2,要使struct1各字段的值与struct2各字段的值相等,也就是要把struct2各字段的值赋给struct1,便可以这样调用以上函数:
struct_copy(&struct1, &struct2, sizeof(STRUCT_TYPE));
以上函数简单、通用、有效,对肆意构造范例有效,也合适于别的复杂数据范例,如结合(union)等.风趣的是,它也合适与整形、浮点型等简单数据范例的变量之间复制.
此函数的计划思惟可以应用在很多方面,如进程之间、计算机之间通信时,可以在通信的一方将某些数据范例拆分成字节,到达通信的另一方再将收到的字节拼成呼应的数据范例,这比按位传送要简单、高效得多.
以上是“<b>通用构造复制函数</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |