编译能过去,但是报错
遇到了一个奇怪的问题
程序简化之后大概是这样,先输入一个整数n,然后输入n个整数存入数组
再输入一个整数m,然后输入m个整数存入数组
是要求交集的,结果在for循环里就出了问题,只要在for循环里出现赋值操作就报错呢
例如我写的flag=5,但是temp = *(bp+i);temp++就可以..求教咋回事呢?
#include <stdlib.h>
#include <stdlib.h>
int main(void){
int a,b;
int i,j;
int flag;
int *ap = (int *)malloc(sizeof(int)*a);
int *bp = (int *)malloc(sizeof(int)*b);
scanf("%d",&a);
for(i=0;i<a;i++){
scanf("%d",ap+i);
}
scanf("%d",&b);
for(i=0;i<b;i++){
scanf("%d",bp+i);
}
/************交集********************/
int *p = (int *)malloc(sizeof(int)*(a+b));
int *temp = p;
for(i=0;i<a;i++){ //装入a
*(p+i) = *(ap+i);
}
temp = temp + a ; //指针挪过来
for(i=0;i<b;i++){ //装入b
flag = 5 ;
/*temp = *(bp+i);
temp++;*/
}
//printfArr(p,a);
//printfArr(p,a+b);
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你在用
malloc
申请数组空间的时候a,b
还没有赋值,他们俩的值是未定义的。你申请的数组的长度也不知道多长,所以在给数组赋值时就会越界。解决办法:
把给
a,b
赋值的两个scanf
语句放到Malloc
之前。解决了
int ap = (int )malloc(sizeof(int)*a);
int bp = (int )malloc(sizeof(int)*b);
这里越界了