簡體   English   中英

使用指針在函數內調用函數-C

[英]Calling function within function using pointers - C

我有一個函數可以接受兩個指針參數。 可以說這是

void add(u16 *x, u16 *y)

我還有另一個函數,它接受三個指針參數。

void fact(u16 *a, u16 *b, u16 *c){
    if(*c > 500){
        add(*a,*b); // Is this correct?
    }
} 

如果滿足事實中的某個特定條件,我想將參數a和b傳遞給函數add,但是我想按引用而不是按值傳遞它們。 我到底該怎么做? 調用函數時,a,b,c,x和y均使用“&x”從“ main”傳遞下來。

因此,我希望所有內容都通過引用傳遞,以便任何值修改都可以返回main。

非常感謝你!

加(* a,* b); // 這個對嗎?

不,這是不正確的。

給定原型為void add(u16 *x, u16 *y) ,則調用函數應調用匹配類型的參數。 fact()ab已經是指針,因此正確的代碼應類似於:

void fact(u16 *a, u16 *b, u16 *c){
    if(*c > 500){
        add(a,b); // this is correct
    }
}

不,這是不正確的。 我個人發現,如果在類型旁邊而不是變量名稱旁寫*則更容易理解。

您的函數add需要兩個參數,兩個都是u16指針,即它們是u16* fact ,您有三個變量都為u16* 類型已經匹配,因此您需要將其稱為:

add(a, b);

然后,您將按值傳遞指針 ,這等效於按引用傳遞實際整數值。 您可以在需要時將指針傳遞給指針,但是這種方法比按值傳遞指針要少。

暫無
暫無

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

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