繁体   English   中英

检测到C语言中的错误导致堆栈崩溃的原因

[英]cause for stack smashing detected error in C

这是代码:当给定导管之一(与直角相邻的边)时,用于计算直角三角形的另外两个边。

(我是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;
}

main函数中,变量result_size是单个int 您将指向该变量的指针传递给pythagoreanTriple函数,在该函数中将其视为由三个元素组成的数组。 指针可以视为数组,但只能是单个元素 ,它表示main函数中的变量。

如果它应该是树元素的数组,那么就这样定义它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM