无法在c函数中使用int *的值

时间:2018-03-14 03:47:39

标签: c function pointers

我在尝试在函数中使用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;
                   ^~~~~~~~~~

我使用指针错了吗?

1 个答案:

答案 0 :(得分:8)

您已在tamresult循环中声明了新变量for

for (int i = incmaior = 0, tamresult = 0; i < fimmaior; i++) {
    ...
}

在循环中,tamresultint变量,而不是函数的int*参数,因此您无法通过它进行间接。

我不确定你为什么把它放在那里。您之前已在功能中分配了*tamresult = 0;,无需在for标头中分配for (int i = incmaior = 0; i < fimmaior; i++) { ... } 。只需删除它。

formData.append('name',array.toString());