[英]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()
, a
和b
已經是指針,因此正確的代碼應類似於:
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.