永发信息网

c语言,连接2个数组的方法???

答案:5  悬赏:0  手机版
解决时间 2021-03-23 10:55
c语言,连接2个数组的方法???
最佳答案
    首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组。
    用动态数组实现以下核心代码:

    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数组。

全部回答
void strcat(char str1,char str2) { int i,j; for(i=0;str1[i]!需要用到连接字符串函数!比如说C语言的就是strcat(字符数组1,字符数组2);
把第九行if(x=4)改为if(x>=4);另外,你的冒泡法逻辑有问题,此外应该把a[]改为c[]。
if(x=4)改为if(x<2)
连接两个数组有点问题,for(x=0;x<6;x++) 数组长度怎么确定array.length 不能用6来表示
可以写个方法,将两数组合并成一个数组
也可以用API函数 copymemory
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑系统配置老,转32位的系统会不会比64位的
闯红灯怎么界定,客货混载属于什么行为 违法行
刘楼腾俊电脑专卖地址在哪,我要去那里办事
顺溪派出所地址有知道的么?有点事想过去!
近年来,我国通过制定相应税收政策,鼓励社会
打印机打印照片很多墨迹
大写四万零七百八十八元怎么写
12V直流电机在卡死的情况下怎么去检查电流增
描述不想结婚的句子,写小说用,描写婚礼现场
为什么每次练完哑铃后手臂有时侯会酸有时侯不
我朋友的妹妹刚上初二,有一次我和她妹妹在一
给主播拉关注的口号,网络主播求关注用语
超超外贸服饰男装店地址有知道的么?有点事想
帮宝适纸尿裤 帮宝适特级棉柔,有白帮还有紫
单选题有人从国外旅游回来,带回一些旅游地的
推荐资讯
八十大寿祝福对联,关于春天的对联
河北人为什么被全国骂,安徽人素质为什么这么
塔吊回转问题
吴世勋讨厌吃什么
小米笔记本有多垃圾
我在花盆中发现许多白色很小的虫子,长约3毫
电视一直在更新怎么办?
网上口臭蒋老师真假?
自驾游从洛阳出发往甘肃一线回往甘南九寨十八
包流量结转是什么意思,空间每月流量100G以上
绪可以组可以组什么词,禁中的禁可以组什么词
公司春联,横批:不忘初心上联:精准施策创千
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?