c语言,连接2个数组的方法???
答案:5 悬赏:0 手机版
解决时间 2021-03-23 10:55
- 提问者网友:活着好累
- 2021-03-23 01:23
c语言,连接2个数组的方法???
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-03-23 02:13
- 首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组。
用动态数组实现以下核心代码:
int * Link(int *a,int lenA,int *b,int lenB) {
int *p=new[lenA+lenB];//新建一个数组,数组大小为两数组总和
int *pp=p;//运算指针
//复制数组不要自己使用循环,那样效率很低,应该采用库函数中的memcpy。
memcpy(pp,a,lenA*sizeof(int));//将数组a复制到新建内存首地址
memcpy(pp+lenA,b,lenB*sizeof(int));//将数组b复制到前数组尾部
//如果需要,释放数组a和b,当然如果是静态分配的数组,下面两句可注释掉
delete []a;
delete []b;
return p;
}
其中sizeof(int)取整型类型的字节宽度,当然你可以直接写4,但是不同编译器不同操作系统int类型的字节宽度可能不同,养成使用sizeof取类型宽度可以使你的代码具有很好的兼容性,减少意外。
复制后指向会改变,我们还需要将p返回给调用者,因此不可以直接使用p进行复制,需要建一个指针pp,复制p的值,利用pp复制数组。
pp+lenA可以让pp指向复制后的数组a的尾部,在后面的位置复制b数组。
全部回答
- 1楼网友:洎扰庸人
- 2021-03-23 04:33
void strcat(char str1,char str2) { int i,j; for(i=0;str1[i]!需要用到连接字符串函数!比如说C语言的就是strcat(字符数组1,字符数组2);
- 2楼网友:佘樂
- 2021-03-23 04:09
把第九行if(x=4)改为if(x>=4);另外,你的冒泡法逻辑有问题,此外应该把a[]改为c[]。
- 3楼网友:長槍戰八方
- 2021-03-23 02:47
if(x=4)改为if(x<2)
- 4楼网友:第幾種人
- 2021-03-23 02:42
连接两个数组有点问题,for(x=0;x<6;x++) 数组长度怎么确定array.length 不能用6来表示
可以写个方法,将两数组合并成一个数组
也可以用API函数 copymemory
可以写个方法,将两数组合并成一个数组
也可以用API函数 copymemory
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯