wohenaifanjian 2019-08-18 20:45 采纳率: 0%
浏览 282

未在函数中使用的变量,出了函数体却出现了值的变化,大神们能帮忙看下吗

void get_random_num(int *b,int count)
{
int i,m = 315,j;
int *a = new int[count+1];
srand(unsigned(time(NULL)));
int p1 = -2,p2 = -1,tmp;
for(i=0;i<count;i++)
{
a[i] = i+1;
}
a[count] = -1;
double circle_time = count/2;
for(j = 0;j<=circle_time;j++)
{
p1 = rand()%count;
p2 = rand()%count;
if(p1 == p2)
{
while(p1 == p2)
{
p1 = rand()%count;
p2 = rand()%count;
}
tmp = a[p1];
a[p1] = a[p2];
a[p2] = tmp;
}
else
{
tmp = a[p1];
a[p1] = a[p2];
a[p2] = tmp;
}
}
int step = (count-1)/315;
j = 0;
for(i = step;i<=count;i = i + step)
{
b[j] = a[i];
j++;
}
delete []a;
}

以上是一个取得315个不重复随机数的程序,count是从1~count的范围中选取
char fy3c[200] = "E:\test\new_final_data\fy3c\fy3c.2014_2017_01.txt";
char *aim = fy3c;
aim为储存目标文件路径的指针,
int first,second;
for(i = 0;i<200;i++)
{
if(aim[i]=='_'&&aim[i+1]=='0')
{
first = i+1,second = i+2;
break;
}
}
以上代码是用first,second两个变量记录aim指向的目标路径中'0','1'所出现的数组中所在位置
我创建了一个 int num[315],count = 1290;
然后get_random_num(num,count);
在这个函数结束后,发现first,second,aim的值都发生了变化,这是为什么??

第一次提问,有什么不专业的地方请多体谅
  • 写回答

1条回答

  • threenewbee 2019-08-18 23:37
    关注

    检查数组越界,一旦越界,是可以破坏别的变量的

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料