gpt4 book ai didi

c - 将动态分配的数组作为C中的参数传递

转载 作者:太空狗 更新时间:2023-10-29 15:19:58 25 4
gpt4 key购买 nike

所以...我的 main 上有一个动态分配的数组:

int main()
{
int *array;
int len;

array = (int *) malloc(len * sizeof(int));
...
return EXIT_SUCCESS;
}

我还想构建一个函数来处理这个动态分配的数组。到目前为止我的功能是:

void myFunction(int array[], ...)
{
array[position] = value;
}

如果我将其声明为:

void myFunction(int *array, ...);

我还能做吗:

array[position] = value;

否则我将不得不这样做:

*array[position] = value;

...?

此外,如果我使用的是动态分配的矩阵,那么声明函数原型(prototype)的正确方法是:

void myFunction(int matrix[][], ...);

或者

void myFunction(int **matrix, ...);

...?

最佳答案

If I declare it as:

void myFunction(int *array, ...);

Will I still be able to do:

array[position] = value;

是的——这是合法的语法。

Also, if I am working with a dynamically allocated matrix, which one is correct to declare the function prototype:

void myFunction(int matrix[][], ...);

Or

void myFunction(int **matrix, ...);

...?

如果您使用多个维度,则必须在函数声明中声明除第一个维度之外的所有维度的大小,如下所示:

void myFunction(int matrix[][100], ...);

这个语法不会像你想的那样:

void myFunction(int **matrix, ...);
matrix[i][j] = ...

这声明了一个名为 matrix 的参数,它是一个指向 int 的指针;尝试使用 matrix[i][j] 取消引用可能会导致段错误。

这是在 C 中处理多维数组的众多困难之一。

这是解决此主题的有用 SO 问题: Define a matrix and pass it to a function in C

关于c - 将动态分配的数组作为C中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18522396/

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