十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在C语言当中,对于数组复制要分两种。
创新互联服务项目包括镇平网站建设、镇平网站制作、镇平网页制作以及镇平网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,镇平网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到镇平省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1)字符数组。
字符数组相当于字符串,可以用标准函数盯孝strcpy()和strncpy()直接进行字符串复制。
2)其他数组。
由于C语言的原芹则历始性,它并不具备操作符重载。所以对于数组复制,都需要嫌搜对数组进行遍历,然后每个元素每个元素的一一复制。根据数组的大小和维数,可选择不同的循环或者递归进行复制。
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;
}
比如源字符串是s,要复制到另一字符串t中,这里必须满足t能放哗毕得肢返下s的全部元素,否则将会有危险发生。举例代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char *s="The quick brown fox jumps over a lazy dog. 1234567890";
char *ps=s,t[60],*pt=t;
while(*pt++=*ps++);//这就把s全部复制给t了
printf("%s\历芦饥n",t);//打出来看看...
return 0;
}
target[m][n]=source[m][n];
最明显错在这,应该为i、j循环。此山并外,在vc下你的代码过不了,简唯洞数组大小不拦枯定编辑器无法分配空间。