c++之五谷雜糧---2。本站提示廣大學習愛好者:(c++之五谷雜糧---2)文章只能為提供參考,不一定能成為您想要的結果。以下是c++之五谷雜糧---2正文
2.1 我們經過調用運算符(call operator)來執行函數。調用運算符的方式是一對圓括號,它作用於一個表達式,該表達式是函數或許指向函數的指針;圓括號之內是用逗號隔開的實參列表,我們用實參初始化函數的形參。調用表達式的類型就是函數的前往類型。
1 1 #include<iostream> 2 2 using namespace std; 3 3 int fuc(int a, double b) 4 4 { 5 5 cout<<"a= "<<a<<" "<<"b= "<<b<<endl; 6 6 return 0; 7 7 } 8 8 int main(void) 9 9 { 10 10 int (*fuc_point)(int ,double);//int (*fuc_point)(int a ,double b); 參數名是可選的,其實編譯器基本不關懷參數名,只在乎參數類型 11 11 fuc_point=fuc;//fuc_point=&fuc;這兩句等效 12 12 fuc(3,3.14);//3 3.14為實參 用該實參初始化形參a,b 調用表達式的類型fuc為int 故該函數的前往類型為int 13 13 fuc_point(3,3.14);//這三個都可以調用函數fuc 14 14 (*fuc_point)(3,3.14); 15 15 return 0; 16 16 }
運轉後果:
Analyze:
fuc_point=&fuc;表達式的&是可選的,由於函數名被運用時總是由編譯器把它轉換成函數指針,&只是顯示闡明了編譯器講隱式執行的義務;
fuc_point(3,3.14);編譯器需求的是一個函數指針,而fuc_point正是契合這樣要求的;
(*fuc_point)(3,3.14);先對指針停止解援用,它把函數指針轉換成一個函數名。這個轉換並不是真正需求的,由於編譯器在執行函數調用操作符之前又會把它轉換回去。
這三者都是合法且效果相反的。
2.2 假如部分變量沒有被顯示的初始化,它將執行值初始化,內置類型的靜態變量初始化為0.