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

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

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!