网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月10日
漏签
0
天
c语言吧
关注:
798,970
贴子:
4,358,553
看贴
图片
吧主推荐
视频
游戏
7
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
求助,实现合并array重复元素
只看楼主
收藏
回复
Zoe
Ai
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
rt
Zoe
Ai
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
rt,要实现一合并两个数组的重复元素,上面方法返回指针,在返回之前输出测试是对的。但是到main里赋值给final之后,final只占8个字节(2个元素)就不对了。而且如果把main中的循环次数改为final本该有的长度,就可以正确输出。是怎么回事呢?代码和运行如下
2025-08-10 14:53:02
广告
不感兴趣
开通SVIP免广告
Zoe
Ai
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
怎么会这么糊啊
Zoe
Ai
酱油
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#include <iostream>
#define LEN_A 5
#define LEN_B 6
using namespace std;
int* union_Array (int a[], int lenA, int b[], int lenB)
{
int len_temp = lenA + lenB;
int *temp = new int [len_temp];
cout << len_temp << endl;//test
for (int m = 0; m < lenA; m++)
temp [m] = a [m];
for (int n = 0; n < lenB; n++)
temp [n + lenA] = b[n];
int i,j,k = 0;
for (i = 0; i < len_temp; i++)
{
for (j = i + 1; j < len_temp; j++)
{
if (temp [j] == temp [i])
{
for (k = j + 1; k < len_temp; k++)
{
temp [k-1] = temp [k];
}
len_temp --;
cout << len_temp << " ";//test
j --;
}
}
}//去除重复
cout << "\nfinal: "<< len_temp << endl;//test
for (int l = 0; l < len_temp; l++)
cout << temp[l] << " ";
return temp;
}
int main()
{
int a[] = {1,2,3,4,50};//test
int b[] = {1,2,3,4,5,66};//test
int *final = union_Array(a, LEN_A, b, LEN_B);
cout << '\n' << sizeof(a) / sizeof(a[0]) << " a\n";//test
cout << sizeof(final) / sizeof(final[0]) << " final\n";//test
for (int i = 0; i < sizeof(final); i++)
cout << final[i] << " ";
delete[] final;
return 0;
}
贴吧用户_GGW31RP
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
有没有一种可能,sizeof(final)其实是指针的大小也就是64位即8个字节也就是你说的两个元素呢
贴吧用户_GGW31RP
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
合并后的数组长度你不是都算出来了吗,用上不就行了
热心网友来了
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
欢迎进来一起学习交流讨论问题
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示