我想在不知道任何其他事情的情况下找到矩阵所拥有的行数和列数。
示例:
int * findElements(int matInput[][]) {
/*Count blah*/
/*Now to run a loop till the number of rows*/
/*I need to know the size of the matrix to run the loop above*/
}
我无法运行循环来查找大小,因为我不知道何时终止,也不知道矩阵是否在创建时被初始化。 还有其他方法吗?
答案 0 :(得分:8)
你无法用C语言做到这一点。如果没有某种附加信息,只需指向一个指针即可找到数组的大小。
支持查询数组长度的语言通过传递一些附加信息来实现。在C中你也可以这样做,但你必须明确地这样做:
struct matrix {
int rows, cols;
int *data; // packed representation, or int **data;
};
int *findElements(struct matrix *matInput);
作为一种稍微高级的方法,您可以将数组数据放在内存中的struct matrix
之后;这减少了所需的指针访问次数,因此速度稍快。但基本技术保持不变。
答案 1 :(得分:4)
#include<stdio.h>
int main()
{
float a[9][2]={{0,1},{1,1}};
int row=(sizeof(a)/sizeof(a[0]));
int col=(sizeof(a)/sizeof(a[0][0]))/row;
printf("%d\n",row);
printf("%d\n",col);
return 0;
}
答案 2 :(得分:0)
或者,您可以为行和列定义最大长度,然后使用它们迭代数组。
#define MAX_COLS 15
#define MAX_ROWS 15
int * findElements(int matInput[MAX_ROWS][MAX_COLS])
{
int row, col;
for(row = 0; row < MAX_ROWS; row++)
{
for(col = 0; col < MAX_COLS; col++)
{
//do stuff
}
}
}
这只是定义数组的大小,它不一定要填充所有元素
答案 3 :(得分:0)
如果您想在 C ++
中尝试如果给定参数矩阵
例如:-int function( vector<vector<int>>& matrix )
然后找到列数,就可以写
int columns = matrix[0].size();
并查找给定矩阵中的行数
int rows = matrix.size();