gpt4 book ai didi

c - 访问 main 中动态分配的内存(在函数中分配)时出现段错误,C

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:20 26 4
gpt4 key购买 nike

<分区>

所以我想做的是使用指针创建一个二维数组作为矩阵。我将双指针连同行/列放入我的 CreateMatrix 函数中,然后动态地将数组分配给它们。我把10个都填进去测试,显示都分配好了。但是,主要是,当我尝试访问二维数组的任意值时,我出现了段错误。不管它是否出现在函数中,动态分配不应该存储到堆上,因此它应该工作吗?

void CreateMatrix(int ** matrix, int row, int col){

int i, j;
matrix = (int**)malloc(row* sizeof(int*));
for (i = 0; i < row; i++) {
matrix[i] = (int*)malloc(col* sizeof(int));
for (j = 0 ; j < col; j++) {
matrix[i][j] = 10;
printf("i: %d, j: %d\n", i,j);
printf("%d",matrix[i][j]);
}
}
}

主要内容:

    int ** matrix1;
int m1row, m1col = 5;

CreateMatrix(matrix1, m1row, m1col);
fprintf(stdout,"Testing if got out");
fflush(stdout);
printf("This should be 10 : %d",matrix1[0][0]); //definitely segfaults here

另外,一个附带问题;有人告诉我,在 C 中“通过引用”传递时,不仅需要函数定义中的指针,还需要函数调用变量上的 & 符号。例如,如果我想通过引用传递矩阵 a:CreateMatrix(&a, b, c); 而不是 CreateMatrix(a, b, c);。如果我使用 &,当我需要双指针时,我会收到一个不兼容错误,指出参数是三指针。 (这在理论上是有道理的,因为您传递的是双指针的位置)。那么 & 是否只用于非指针变量?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com