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

C++中的C++函數說明

編輯:C++入門知識

C++函數必須有main()函數,main()函數是程序的入口點,前面介紹的每個樣本程序都有main()函數,但是,並非所有C++程序都有傳統的main()函數,用C或C++寫成的Windows程序入口點函數稱為WinMain(),而不是傳統的main()函數。

說明 C++ Builder GUI應用程序有WinMain(),但隱藏起來了。C++函數使用戶無需考慮Windows程序的低級細節,而可以集中考慮程序用戶界面和其它部分的創建。main()函數和其它函數一樣是函數,有相同的構成部分。

在32位控制台應用程序中,C++ Builder生成具有下列原型的缺省main()函數:int main(int argc,char** argv);這個main()函數形式取兩個參數並返回一個整型值。前面說過,數值在調用函數時傳遞給函數。但對於main()函數,沒有直接調用,而是在程序運行時自動執行。那麼,main()函數如何取得參數呢?辦法是從命令行取得。

這裡要用命令行變元WM_KILLFOCUS、d和i啟動程序grep,我們要演示如何在main()函數中將其變為argc和argv.首先,整型變量argc包含命令行中傳遞的參數個數,至少為1,因為程序名也算作參數。變量argv是個數組,包含字串的指針。這個數組包含命令行中傳遞的每個字串。本例中:

  1. 1: #include <iostream.h>   
  2.  
  3. 2: #include <conio.h>   
  4.  
  5. 3: #pragma hdrstop   
  6.  
  7. 4:   
  8.  
  9. 5: int main(int argc,char **argv)   
  10.  
  11. 6: {   
  12.  
  13. 7:cout << "argv = "argc << end1;   
  14.  
  15. 8.for (int i=0;i<argc;i++)   
  16.  
  17. 9. cout << "Parameter " << i << ": " << argv[i]<< end1;   
  18.  
  19. 10. cout << end1 << "Press any key to continue...";   
  20.  
  21. 11: getch();   
  22.  
  23. 12: return 0;   
  24.  
  25. 13: }  

將這個項目存為Argstest,然後不是單擊Run按鈕,而是選擇主菜單中的Project|Build All,這樣只建立項目而不執行程序。項目建成後,選擇主菜單中的在Run|Parameters,RunParameters對話框RunParameters字段中輸入下列內容:one two three "four five" six然後單擊Run按鈕,程序即用所指定的命令行參數運行。

另一種辦法是用下列命令行在DOS提示下運行程序:argstest one two three "four five" six程序運行時,它會顯示傳入的變元數,然後列出每個變元。運行幾次,每次提供不同命令行變元,注意產生的結果。

C++函數一個強大的特性是能直接訪問內存。由於這個特性,C++函數無法阻止你寫入特定內存地址,即使這個地址是程序不讓訪問的。下列代碼是合法的,但會導致程序或Windows崩潰:int array[5];array[5]=10;這是常見的錯誤,因為數組是以0為基數的,最大腳標應是4而不是5。

如果重載數組末尾,則無法知道哪個內存被改寫了,使結果難以預料,甚至會導致程序或Windows崩潰。這類問題很難診斷,因為受影響的內存通常要在很久以後才訪問,這時才發生崩潰讓你莫名其中之妙)。所以寫入數組時一定要小心。

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