我在使用这个程序时遇到了问题,perimetro (perimeter)。我从来没有得到正确的值(value)。我总是得到疯狂的数字。
这是我的代码:
#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;
最佳答案
改变
perimetro(v,p);
到
p=perimetro(v,p);
这样做是因为函数返回值(周长)但您没有将该值存储在任何变量中。将 p
传递给函数并修改它不会修改它在 main
中的值。这是因为 C 使用值传递,并且在函数中找到了变量的副本。
更好的方法是将 p
的地址传递给函数并使用指针作为函数的第二个参数,或者将一个参数作为值传递给函数函数中未使用第二个参数。
关于C 函数返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609657/