【发布时间】:2017-11-12 10:38:33
【问题描述】:
代码如下: 用于计算直角三角形的另外两条边,当给定一个cathetus(与直角相邻的边)时。
(我是 C 初学者)
int* pythagoreanTriple(int a, int *result_size){
// Complete this function
result_size[0]=a;
int sqa=a*a;
if(sqa%2)
{result_size[1]=(sqa-1)/2;
result_size[2]=result_size[1]++;
}
else{
int m=a/2;
result_size[2]=m*m+1;
result_size[1]=m*m-1;
}
return result_size;
}
int main() {
int a;
scanf("%d", &a);
int result_size;
int* triple = pythagoreanTriple(a, &result_size);
for(int triple_i = 0; triple_i < 3; triple_i++) {
if(triple_i) {
printf(" ");
}
printf("%d", triple[triple_i]);
}
puts("");
return 0;
}
【问题讨论】:
-
作为
result_size传递的值不是数组,而是用作。由于传递的值是堆栈分配变量的地址,因此堆栈被粉碎。
标签: c error-handling compiler-errors