[英]How to pass a double array to a function in C?
我一整天都试图解决这个问题:
如何将双数组传递给函数?
这是一个例子:
int matrix[5][2] = { {1,2}, {3,4}, {5,6}, {7,8}, {9,10} };
我希望将此矩阵传递给名为eval_matrix
函数,
void eval_matrix(int ?) {
...
}
我无法弄清楚应该代替?
任何人都可以帮我解决这个问题吗?
我知道数组可以作为指针传递,但是双数组(或三数组?)怎么样?
谢谢,Boda Cydo。
要用作数组,编译器必须知道数组的内部步幅,所以它是:
void eval_matrix( int m[5][2] ) { ...
要么:
void eval_matrix( int m[][2], size_t od ) { ... /* od is the outer dimension */
要不就:
void eval_matrix( int* p, size_t od, size_t id ) { ... /* ditto */
在任何情况下它都是语法糖 - 数组被衰减为指针。
在前两种情况下,您可以像往常一样引用数组元素m[i][j]
,但必须在第三种情况下手动偏移为p[i*id + j]
。
你不应该传递整个矩阵,而应该传递指针,但是,你也应该传递大小...这就是我要做的,假设它总是对[2]。
struct pair {
int a, b;
};
struct pair matrix[] = { {1,2}, {3,4}, {5,6}, {7,8}, {9,10} };
void eval_matrix(struct pair *matrix, size_t matrix_size) {
...
}
eval_matrix(matrix, sizeof(matrix) / sizeof(struct pair);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.