[英]Function pointer not returning a value
我們剛剛在學校里學習了C語言中的函數指針,我想在測試程序中嘗試一下。 這個想法顯然很簡單。 但是,當我嘗試使用result = (*funcPtr)();
我收到STATUS_ACCESS_VIOLATION
異常,但我不知道自己做錯了什么。 關於我所缺少的任何想法嗎?
#include <stdio.h>
int fun1();
int fun2();
int (*funcPtr)(void);
int fun1() {
return 1;
}
int fun2() {
return 2;
}
int main(void) {
int input,result = 0;
scanf("%d",input);
if(input == 1) {
funcPtr = &fun1;
} else if(input == 2) {
funcPtr = &fun2;
}
result = (*funcPtr)();
printf("%d\n",result);
}
您在scanf
輸入之前忘記了&
。 因此, scanf
不會寫入input
變量的地址,而是寫入其值(此時,變量未初始化)。
將該行更改為:
scanf("%d", &input);
到一個指針傳遞給input
到scanf
和不是值input
。
並且正如其他用戶已經指出的那樣,不要忘記處理1
和2
以外的其他輸入。 否則,您將調用未初始化的funcPtr
變量,這很可能導致分段錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.