gpt4 book ai didi

c - 如何在 C 函数中自动生成双指针参数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:09 26 4
gpt4 key购买 nike

我有一个名为 make5 的简单函数,它使二维矩阵中的每个元素都等于 5,如下所示:

int make5(int r, int c, double **d)
{
int i, j;

for (i = 0; i < r; i++) {
for (j = 0; j < c; j++) {
d[i][j] = 5;
}
}

return 0;
}

我希望能够使用以下调用在不同的矩阵上运行此函数:

make5(2, 3, a);
make5(2, 4, b);

其中 a 和 b 已声明为指向数组数组的指针。但是当我尝试这样做时,我不断收到段错误。我如何更改 make5 以便我可以在 a 和 b 上运行它?

最佳答案

该功能运行良好。您必须错误地分配内存或将错误的参数传递给函数。

工作示例:

#include <stdio.h>
#include <stdlib.h>

int make5(int r, int c, double **d)
{
int i, j;

for (i = 0; i < r; i++) {
for (j = 0; j < c; j++) {
d[i][j] = 5;
}
}

return 0;
}

#define ROWS 4
#define COLS 3

int main(void)
{
double** p = malloc(ROWS * sizeof(double*));
int i, j;

for (i = 0; i < ROWS; i++)
p[i] = malloc(COLS * sizeof(double));

for (i = 0; i < ROWS; i++)
for (j = 0; j < COLS; j++)
p[i][j] = 1;

for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
printf("%f ", p[i][j]);
printf("\n");
}

make5(ROWS, COLS, p);

for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
printf("%f ", p[i][j]);
printf("\n");
}

return 0;
}

输出(ideone):

1.000000 1.000000 1.000000 
1.000000 1.000000 1.000000
1.000000 1.000000 1.000000
1.000000 1.000000 1.000000
5.000000 5.000000 5.000000
5.000000 5.000000 5.000000
5.000000 5.000000 5.000000
5.000000 5.000000 5.000000

关于c - 如何在 C 函数中自动生成双指针参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364495/

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