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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型