C语言 从 main() 调用两次返回指针的函数



>我正在尝试创建一个生成随机矩阵的函数。

我不擅长指针,但我真的认为这应该有效。

这是我从 main 调用两次的函数,并且在两种情况下都生成相同的矩阵......

int **generate_matrix(size_t m, size_t n){
int i1,i2;
int **ptr1=(int **)malloc(sizeof(int *)*m);
srand(time(0));
for(i1=0; i1<m; i1++){
    ptr1[i1] = (int*)malloc(sizeof(int)*n);
    for(i2=0; i2 < n; i2++){
        ptr1[i1][i2]=rand()%10;
    }
 }
return ptr1;
}

总的来说,我以正常的方式称呼它们:

int **matrix1,**matrix2;
matrix1=generate_matrix(3,3);
matrix2=generate_matrix(3,3);
(...)
//prints and stuff
free(matrix1);
free(matrix2);

你正在用srand(time(0));播种你的兰德。如果您的计算足够快(即未达到下一秒),则由于其粒度为 1 秒,时间将返回两次相同的值。

您可以通过使用绝对不同的数字播种来检查结果。

最新更新