簡體   English   中英

不完全確定我的回報做錯了什么

[英]not entirely sure what I'm doing wrong with my return

首先,請注意這是一個更大系統的一部分,這只是隔離了一個部分,這就是使用指針的原因。 我假設我試圖打印的 powerArgs 回報有問題。 雖然我不完全確定出了什么問題

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double* powerArgs(int*, int*);
int main() 
{
 int parmA, parmB;
 int parma, parmb; 
 printf("Enter 2 integers ");
 scanf("%d %d", &parmA, &parmB);
printf("%d raised to the %d power is ",parmA,parmB);
printf("%.0lf \n", *powerArgs(&parmA, &parmB));
}
double* powerArgs(int*a, int*b)
{
    int T=*a;
    int L=*b;
    int t;
    t=pow(T,L);
    return t;
    
}

運行后我留下一個錯誤,上面寫着警告:return makes pointer from integer without a cast [-Wint-conversion]
和分段錯誤(核心轉儲),這不是所需的打印。 我認為這是返回的參數類型,盡管我可能是非常錯誤的。

您為 function powerArgs指定的返回類型是指向雙精度的指針。 但是,您實際返回的是 integer int t

您可能應該將 t 聲明為指向雙精度的指針: double *t;

然后,可能需要使用malloc或類似的東西在堆上為其分配空間,以便指向 t 的指針在您的powerArgs function 之外仍然有效。

最后,將 指向的值設置為 pow 的結果。 *t = pow(T, L)

評論很快解決了這個問題,所以我從不刪除 double 和 powerArg 的指針並重寫 int t; 將 t 翻倍; .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM