函数返回指针从main()调用两次

时间:2014-12-09 11:09:36

标签: c pointers multidimensional-array

我试图创建一个生成随机矩阵的函数。

我指点并不好,但我真的认为这应该有用。

这是我从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);

1 个答案:

答案 0 :(得分:2)

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

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