c语言编写数组复制的函数 c语言数组复制到新数组

c语言如何实现多维整型数组的复制有两种常用的方法 。
1 对数组各个维循环 , 遍历每个元素,并将其赋值到目标数组的对应位置上 。
缺点:代码相对复杂 。
优点:可以不不同大小和形式的数组进行交叉复制 。
2 利用C语言中多维数组元素存储连续性,使用memcpy函数整体复制 。
缺点:仅使用源数组要复制的数据是连续的,同时在目标数组中以同样顺序连续复制的情况 。
优点:代码简单,一个函数调用即可完成赋值 。相对第一种,执行效率略高 。
c数组复制的函数C复制函数
一、场景一:全部默认
#include
class base
{
public:
base()
{
}
base(int dt):
data(dt){
}
void get()
{
printf("base::data = https://www.04ip.com/post/%d/n",data);
}
public:
int data;
};
class derived:public base
{
public:
derived()
{
}
derived(int dt,int ddt):
base(dt),ddata(ddt)
{
}
void get()
{
base::get();
printf("derived::ddata = https://www.04ip.com/post/%d/n",ddata);
}
private:
int ddata;
};
int main()
{
derived da(1,5);
derived db(2,10);
da.get();
db.get();
da = db;
da.get();
db.get();
derived dc(da);
dc.get();
base ba(da);
ba.get();
getchar();
}
场景二、基类默认,派生类自定义
#include
class base
{
public:
base()
{
}
base(int dt):
data(dt)
{
}
void get()
{
printf("base::data = https://www.04ip.com/post/%d/n",data);
}
public:
int data;
};
class derived:
public base
{
public:
derived()
{
}
derived(int dt,int ddt)
:base(dt),ddata(ddt)
{
}
derived(const derivedd)
{
printf("call derived::copy construct function.\n");
ddata = https://www.04ip.com/post/d.ddata;
}
derived operator=(const derivedd)
{
printf("call derived::operator= function.\n");
ddata = https://www.04ip.com/post/d.ddata;
return *this;
}
void get()
{
base::get();
printf("derived::ddata = https://www.04ip.com/post/%d/n",ddata);
}
private:
int ddata;
};
场景三、基类自定义,派生类默认
#include
class base
{
public:
base()
{
}
base(int dt):
data(dt)
{
}
base(const baseb)
{
printf("call base::copy construct function.\n");
data = https://www.04ip.com/post/b.data;
}
base operator=(const based)
{
printf("call base::operator= function.\n");
data = https://www.04ip.com/post/d.data;
return *this;
}
void get()
{
printf("base::data = https://www.04ip.com/post/%d/n",data);
}
public:
int data;
};
class derived:public base
{
public:
derived()
{
}
derived(int dt,int ddt):
base(dt),ddata(ddt)
{
}
void get()
{
base::get();
printf("derived::ddata = https://www.04ip.com/post/%d/n",ddata);
}
private:
int ddata;
};
场景四、基类派生类都自定义
#include
class base
{
public:
base()
{
}
base(int dt):
data(dt)
{
}
base(const baseb)
{
printf("call base::copy construct function.\n");
data = https://www.04ip.com/post/b.data;
}
base operator=(const based)
{
printf("call base::operator= function.\n");
data = https://www.04ip.com/post/d.data;
return *this;
}
void get()
{
printf("base::data = https://www.04ip.com/post/%d/n",data);
}
public:
int data;
};
class derived:public base
{
public:
derived()
{
}
derived(int dt,int ddt):
base(dt),
ddata(ddt)
{
}
derived(const derivedd):base(d)
{
printf("call derived::copy construct function.\n");
ddata = https://www.04ip.com/post/d.ddata;
}
derived operator=(const derivedd)
{
printf("call derived::operator= function.\n");
ddata = https://www.04ip.com/post/d.ddata;
return *this;
}
void get()
{
base::get();
printf("derived::ddata = https://www.04ip.com/post/%d/n",ddata);
}
private:
int ddata;
};
C语言 编写3个整数数组复制函数 第1个是复制出顺序相同的数组 第2个是复制出顺序相反的数组gcc 编译测试通过
#include stdlib.h
#include stdio.h
#define N 10
int * copyArray(int *source, int n)
{
int *dest;
int i;
// 分配空间
dest = (int*)malloc(n * sizeof(int));
// 顺序复制
for(i = 0;in;i)
dest[i] = source[i];
return dest;
}
int *copyReverse(int *source, int n)
{
int *dest;
int i;
// 分配空间
dest = (int*)malloc(n * sizeof(int));
// 逆序复制
for(i = 0;in;i)
dest[n - i - 1] = source[i];
return dest;
}
int *copyOrder(int *source, int n)
{
int *dest;
int i,j,minIndex;
// 分配空间
dest = (int*)malloc(n * sizeof(int));
// 顺序复制
for(i = 0;in;i)
dest[i] = source[i];
// 对数组选择排序
for(i = 0;in - 1;i)
{
minIndex = i;
for(j = i;jn;j)
{
// 选择本次最小下标(如果需要降序,将改为,重新编译)
if(dest[j]dest[minIndex])
minIndex = j;
// 交换元素
if(minIndex != i)
{
dest[i] = dest[i] ^ dest[minIndex];
dest[minIndex] = dest[i] ^ dest[minIndex];
dest[i] = dest[i] ^ dest[minIndex];
}
}
}
return dest;
}
int main()
{
int test[N] = {2,4,1,0,9,5,6,8,7,3};
int *origin,*reverse,*order;
int i;
origin = copyArray(test,N);
reverse = copyReverse(test,N);
order = copyOrder(test,N);
for(i = 0; iN; i)
printf("%d ",origin[i]);
printf("\n");
for(i = 0; iN; i)
printf("%d ",reverse[i]);
printf("\n");
for(i = 0; iN; i)
printf("%d ",order[i]);
printf("\n");
free(origin);
free(reverse);
free(order);
return 0;
}
【c语言编写数组复制的函数 c语言数组复制到新数组】关于c语言编写数组复制的函数和c语言数组复制到新数组的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读