首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 函數指標算術:不支援指標加減,僅能比較與賦值

     編輯:程式設計綜合問答

宣告 int (*f)(); 表示「指向回傳 int、無參數函數的指標」。**C 標準規定函數指標不支援算術運算** (++, --, +n, -n)。

允許操作

  • 賦值:f = &func; 或 f = func;
  • 比較:f == &func, f != NULL
  • 呼叫:f() 或 (*f)()

為何禁止算術

  • 函數在記憶體中不一定連續排列,編譯器不保證函數之間有固定間距。
  • 指標加減語意為「移動 N 個元素大小」,函數大小不固定且不可知。

替代方案

若需管理多個函數,改用**函數指標陣列**:

int (*funcs[3])() = {func1, func2, func3};
for (int i = 0; i < 3; ++i) funcs[i]();

陣列索引天然提供有序存取,完全替代指標算術需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved