我在 32 位 Ubuntu 虚拟机上使用 Eclipse 来处理项目。在尝试实现结构或尝试运行特定功能时,我遇到了一个大问题。功能是这个:
int count (matrix m, int v[], int w[], int col) {
int r=0;
int j=0;
while (j < m.length) {
int k=0;
bool aux=true;
while (k < col && aux ){
if (v[k] == 1) {
if(m.i[j][k] != w[k])
aux=false;
}
k++;
}
if(aux) r++;
j++;
}
return r;
}
该函数接收一个矩阵(定义如下),一个带有 1 和 0 的向量(用于了解要搜索的列,一个包含我们要在这些列中搜索的值的向量以及列数(等于向量的长度)和矩阵)。当它遇到第二个“如果”时,它给了我分段错误(我不明白它是什么),我可以看到以这种方式定义它是不正确的,但我已经尝试过并且我可以'似乎没有找到访问向量中值的方法。下面是我的结构矩阵:
typedef int *ind;
struct matrix {
ind *i;
int length;
};
typedef struct matrix matrix;
在这个结构中,我的矩阵有一个指针和长度(行数);指针指向一个指针向量(每行一个指针),每个指针都指向一个向量,实际上就是我的矩阵行。这是我添加和创建空矩阵的函数:
matrix emptyS(int n, int col) {
matrix m;
int d=0;
m.length=0;
m.i=(ind*) malloc(sizeof(int)*n);
int x;
for (x=0; x < n; x++)
{
*m.i = (int*) malloc(sizeof(int)*col);
}
while (d<n){
m.i[d]=NULL;
d++;
}
return m;
} /*Updated*/
matrix add(matrix m,int v[]){
m.i[m.length+1]=v;
m.length++;
return m;
}
我知道这是一个非常具体的问题,但我一直在疯狂地改变我的功能并且似乎无法成功。