1. 程式人生 > >C++基礎學習筆記:函式

C++基礎學習筆記:函式


  
   //!時間:2017年9月9日(週六)夜 //!內容:C++函式基礎 //!最後更改時間:10分鐘之後,汗! #include <iostream> #include <string> #include <cassert> using namespace std;//偷懶 int funcOne(int);//函式原型宣告,可以省略形參名 void swapOne(int i, int j); void swapTwo(int *i, int *j); void swapThree(int &i, int &j); void strTest(const char *str); void strTest(const char str[], int n); void strTest(const string str); template <typename T>//or:template <class T> void myswap(T &i, T &j); int main() {  //1.函式的定義:宣告、定義、呼叫  int numReturn = funcOne(1);//函式的呼叫
  
   
  
  
    //2.函式指標與指標函式;略(見C++指標筆記)
  
   
  
  
    //3.引數傳遞  int numOne = 1, numTwo = 2;  swapOne(numOne, numTwo);//值傳遞,不改變實參  //swapTwo(&numOne, &numTwo);//指標傳遞,會改變  swapThree(numOne, numTwo);//引用傳遞,會改變  cout << numOne << "-" << numTwo << endl;  //*返回與引數列表類似,注意不能返回區域性變數的引用  //*引數限定為const可以避免對引數無意的修改  //字元陣列、C風格字串與string型別的引數:陣列名是首地址  char cStr[10] = "A test!";  char *pStr = "B test!";  string sStr = "C test!";  strTest(cStr);//or:strTest(pStr);  strTest(pStr, 7);//or:strTest(cStr, 7);  strTest(sStr);
  
   
  
  
    //4.函式過載:(見3.strTest)
  
   
  
  
    //5.模板函式  //如3.中的swap函式是以整形的引數,而模板允許以任意型別來定義函式  int iOne = 1, iTwo = 2;  float fOne = 1.1, fTwo = 2.2;  myswap(iOne, iTwo);//例項為int  myswap(fOne, fTwo);//例項為float  cout << iOne << "--" << fOne << endl;
  
   
  
  
    //6.行內函數:inline與函式定義放在一起  //inline對於編譯器來說只是一個建議,編譯器會自動進行優化。  //當inline中出現了遞迴,迴圈,或過多程式碼時,編譯器自動無視inline宣告,同樣作為普通函式呼叫。
  
   
  
  
    system("pause");  return 0; }//!main() end; //函式定義 //<返回型別><函式名>(<引數列表>){函式體} int funcOne(int i) {  return i * 10; }
  
   
  
  
   void strTest(const char *str) {  if (str == nullptr)   assert("null...");  while (*str)   cout << *str++; } void strTest(const char str[],int n)//防止越界操作 {  for (int i = 0; i < n; i++)   cout << str[i]; } void strTest(const string str) {  cout << str; }
  
   
  
  
   void swapOne(int i, int j) {  int temp = i;  i = j;  j = temp; } void swapTwo(int *i, int *j) {  int temp = *i;  *i = *j;  *j = temp; } void swapThree(int &i, int &j) {  int temp = i;  i = j;  j = temp; } template <typename T>//or:template <class T> void myswap(T &i, T &j) {  T temp = i;  i = j;  j = temp;  }