簡體   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