我在尝试在函数中使用int变量的值时遇到了一些麻烦;我需要在函数内部更改的变量,所以我将它作为int *变量传递,并在调用函数时简单地传递该变量的地址,如functionName(& variable);
但是我遇到了问题,而且我不知道为什么我在尝试编译时会遇到错误。 (我使用的是debian 9)
我的职能是:
void subvetcont(int * vetor, int tam, int * vetresult, int * tamresult){
int incmaior=0;
int fimmaior=0;
int incaux=incmaior;
int fimaux=fimmaior;
*tamresult = 0;
for(int i=1; i < tam; i++){
if(vetor[i] == vetor[i-1]+1) fimaux=i;
else if((fimaux-incaux) > (fimmaior - incmaior)){
incmaior = incaux;
fimmaior = fimaux;
incaux=i;
fimaux=i;
}
else{
incaux = i;
fimaux = i;
}
}
for(int i=incmaior, tamresult=0; i <= fimmaior; i++){
vetresult[(*tamresult)] = vetor[i];
(*tamresult) = (*tamresult) + 1;
}
}
我得到的是
ex4.c: In function ‘subvetcont’:
ex4.c:104:14: error: invalid type argument of unary ‘*’ (have ‘int’)
vetresult[(*tamresult)] = vetor[i];
^~~~~~~~~~
ex4.c:105:4: error: invalid type argument of unary ‘*’ (have ‘int’)
(*tamresult) = (*tamresult) + 1;
^~~~~~~~~~
ex4.c:105:19: error: invalid type argument of unary ‘*’ (have ‘int’)
(*tamresult) = (*tamresult) + 1;
^~~~~~~~~~
我使用指针错了吗?
答案 0 :(得分:8)
您已在tamresult
循环中声明了新变量for
:
for (int i = incmaior = 0, tamresult = 0; i < fimmaior; i++) {
...
}
在循环中,tamresult
是int
变量,而不是函数的int*
参数,因此您无法通过它进行间接。
我不确定你为什么把它放在那里。您之前已在功能中分配了*tamresult = 0;
,无需在for
标头中分配for (int i = incmaior = 0; i < fimmaior; i++) {
...
}
。只需删除它。
formData.append('name',array.toString());