C函数返回意外值

时间:2015-02-19 15:05:01

标签: c function

我在使用这个程序时遇到问题,perimetro(周长)。我从来没有得到正确的价值。我总是疯狂的数字。

这是我的代码:

 #include <stdio.h>
 #include <math.h>
 int perimetro(int v[][3] , int p);
 int main(){
 int v[1][3];
 int i,j,p;
 for (i=0;i<1;i++){
     for (j=0;j<3;j++){
        printf("Digite o tamanho de um dos lados do triangulo :");
        scanf("%d",&v[i][j]);
    }
   }
perimetro(v,p);
 printf("O perimetro corresponde a : %d",p);
return 0;
}



    int perimetro(int v[][3], int p) {
p=0;
p=p+v[0][0]+v[0][1]+v[0][2];
return p;

}

1 个答案:

答案 0 :(得分:2)

更改

perimetro(v,p);

p=perimetro(v,p);

这样做是因为函数返回值(周长),但​​您没有将值存储在任何变量中。将p传递给函数并对其进行修改不会在main中修改它的值。这是因为C使用pass-by-value,并且在函数中找到了变量的副本。

更好的方法是将p的地址传递给函数并使用指针作为函数的第二个参数,或者将一个参数作为第二个参数传递给函数函数中没有使用参数。

相关问题