gpt4 book ai didi

C 二维数组初始化抛出段错误

转载 作者:行者123 更新时间:2023-11-30 20:42:34 24 4
gpt4 key购买 nike

我正在尝试深入研究 C 编程。所以我尝试使用双指针创建一个二维数组并用随机值初始化它。但是在访问阶段它会抛出段错误

下面是我的代码的条纹片段:

int main(void){

// Memory allocation for arrays

int size = 3;

double **matrix = (double **)malloc(sizeof(double *)*size*size);

int i, k;

for(i=0; i<size; i++){
for(k=0; k<size; k++){
matrix[i][k] = ((double)rand())/1314.7;
}
}

return 0;
}

你能指出我做错了什么吗?

最佳答案

这是指向指针表的指针,您需要 double 表:)

double *matrix = malloc(sizeof(double)*size*size);

int i, k;

for(i=0; i<size; i++){
for(k=0; k<size; k++){
matrix[i * size + k] = ((double)rand())/1314.7;
}
}

**

double **matrix = malloc(sizeof(double *)*size);

for(int i = 0; i < size; i++)
*(matrix + i) = malloc(sizeof(double) * size);

for(i=0; i<size; i++){
for(k=0; k<size; k++){
matrix[i][k] = ((double)rand())/1314.7;
}
}

当然,在实际代码中,您需要检查 malloc 是否没有失败等等

关于C 二维数组初始化抛出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257341/

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