十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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;i n;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;i n;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;i n;i ++)
dest[i] = source[i];
// 对数组选择排序
for(i = 0;i n - 1;i ++)
{
minIndex = i;
for(j = i;j n;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; i N; i ++)
printf("%d ",origin[i]);
printf("\n");
for(i = 0; i N; i ++)
printf("%d ",reverse[i]);
printf("\n");
for(i = 0; i N; i ++)
printf("%d ",order[i]);
printf("\n");
free(origin);
free(reverse);
free(order);
return 0;
}
有两种常用的方法。
1 对数组各个维循环,遍历每个元素,并将其赋值到目标数组的对应位置上。
缺点:代码相对复杂。
优点:可以不不同大小和形式的数组进行交叉复制。
2 利用C语言中多维数组元素存储连续性,使用memcpy函数整体复制。
缺点:仅使用源数组要复制的数据是连续的,同时在目标数组中以同样顺序连续复制的情况。
优点:代码简单,一个函数调用即可完成赋值。相对第一种,执行效率略高。
#include stdio.h
#includestring.h
int main()
{
char ch[40];
char c[20]={"asdfgh"};
strcpy(ch,c);
printf("%s\n",ch);
}