簡體   English   中英

函數指針未返回值

[英]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);

到一個指針傳遞給inputscanf和不是值input

並且正如其他用戶已經指出的那樣,不要忘記處理12以外的其他輸入。 否則,您將調用未初始化的funcPtr變量,這很可能導致分段錯誤。

暫無
暫無

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

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