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

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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问