嗨,編程新手。只是想知道例如我是否有一個名為voidblink(void)的函式。如果我寫一個代碼
2 * blink();
是不是一樣
blink();
blink();
?
uj5u.com熱心網友回復:
2 * blink();
不,這不會呼叫blink()2 次,這會將 2 乘以blink()回傳的值。因為blink()是void(這意味著blink()不回傳任何內容),這將導致錯誤。
我有一個變數“num”,我希望該函式的呼叫次數與 num 值一樣多
您應該使用for回圈。例如:
for(int i = 1; i <= num; i)
/* this is the same as for(int i = 0; i < num; i) */
{
blink();
}
uj5u.com熱心網友回復:
我不知道您從何處獲取此語法,但它不會兩次呼叫該函式。它將函式回傳值乘以 2。
int blink(void)
{
return 5;
}
int main(void)
{
int result;
result = 2 * blink();
printf("%d\n", result);
}
https://godbolt.org/z/4nrGj3M6W
如果blink有void回傳型別,它將簡單地不編譯。
使用函式指標多次呼叫函式的另一種方式:
void blink(void)
{
printf("BLIMK!!!\n");
}
void callMultiple(void (*func)(void), size_t ntimes)
{
while(ntimes--) func();
}
int main(void)
{
size_t times;
if(scanf("%zu", ×) == 1)
{
callMultiple(blink, times);
}
}
https://godbolt.org/z/jWEd9hnK9
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358013.html
