程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 定義函數的指針,C++和C不同是因為函數重載

定義函數的指針,C++和C不同是因為函數重載

編輯:C++入門知識

在C語言裡,一個指針可以指向一個函數。這個指針也有兩個屬性,但一個是函數的入口地址,另一個是函數的返值類型。例如下面的程序,它在C語言裡是正確的:
int time12(int i)
{      return(i%12);
}
 
int main()
{      int(*fp)()=time12;
        intt=fp(13);
        return0;
}
主函數的第一句是一條定義語句。我們應從等號左邊的標識符讀起,等號左邊出現的除了標識符以外都是類型的符號,讀的順序卻要按照這個符號作為運算符時的運算級別來讀。此句讀作:fp是一個指針、它指向函數(注意,C語言允許其參數類型不寫出)、這個函數的返值是int、這個指針被初始化為函數time12的入口地址。
然而,上述程序在C++裡,第一條語句卻被認為是有錯誤的。C++是強類型檢查語言,這與C++的函數重載機制有關。C++要求必須指出函數的所有形式參數的類型。下列程序才是正確的C++程序:
int time12(int i)
{      return(i%12);
}
 
int main()
{      int(*fp)(int)=time12;
        intt=fp(13);
        return0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved