首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++ 語言基礎:函式規則、main 函式與陣列完全指南

     編輯:VC 教學

函式規則總覽

  • 函式可接受任意多參數或無參數。
  • 函式可回傳一個值,但不強制回傳。
  • 回傳 void 的函式不可回傳數值(編譯錯誤)。無 return 也合法,執行到結尾大括號自動返回。
  • 宣告回傳數值的函式,本體**必須**包含回傳數值的 return,否則編譯錯誤。
  • 函式可接受任意多參數,**但只能回傳一個值**。
  • 參數可按傳值、傳指標、傳參考傳遞。

函式語法


// 宣告(原型)
ret_type function_name(argtype_1 arg_1, argtype_2 arg_2, ..., argtype_n arg_n);

// 定義
ret_type function_name(argtype_1 arg_1, argtype_2 arg_2, ..., argtype_n arg_n) {
    statements;
    return ret_type;
}

main() 函式

C++ 程式**必須有 main()**,它是程式入口點。但非所有 C++ 程式都有傳統 main():Windows 程式入口為 WinMain()。C++ Builder GUI 專案隱藏 WinMain(),讓開發者專注介面建立。

32 位元主控台應用程式,C++ Builder 產生預設原型:


int main(int argc, char** argv);

參數從命令列取得:

  • argc:命令列參數個數(含程式名,至少 1)。
  • argv:字串指標陣列,含每個命令列字串。

命令列參數實例


// 命令列:grep WM_KILLFOCUS d -i
argc = 4
argv[0] = "C:\cbuilder\bin\grep.exe"
argv[1] = "WM_KILLFOCUS"
argv[2] = "d"
argv[3] = "i"

驗證程式:Argstest.cpp


#include 
#include 
#pragma hdrstop
int main(int argc, char** argv) {
    cout << "argc = " << argc << endl;
    for (int i = 0; i < argc; i++)
        cout << "Parameter " << i << ": " << argv[i] << endl;
    cout << endl << "Press any key to continue...";
    getch();
    return 0;
}

專案建置後,用 Run | Parameters 設定命令列參數,或在 DOS 提示字元下執行:argstest one two three "four five" six

main() 多種合法形式


main();
int main();           // 同上
int main(void);       // 同上
int main(int argc, char** argv);
void main();
void main(int argc, char** argv);
// 更多形式...

不需命令列參數時,最基本形式:main() 或 int main()(不指定回傳值時預設回傳 int)。

陣列

所有 C++ 內建型別皆可放入陣列。陣列是數值集合。


int myArray[5]; // 配置 5 個 int,共 20 位元組
myArray[0] = -200;
myArray[1] = -100;
myArray[2] = 0;
myArray[3] = 100;
myArray[4] = 200;

C++ 陣列以 0 為基底。簡潔初始化:


int myArray[5] = {-200, -100, 0, 100, 200};
int myArray[] = {-200, -100, 0, 100, 200}; // 省略長度,編譯器自動推導

多維陣列


int mdArray[3][5]; // 15 個 int,共 60 位元組
int x = mdArray[1][1] + mdArray[2][1];

陣列規則

  • 以 0 為基底。
  • 長度必須為編譯期常數,不可用變數指定(int x=10; int a[x]; 編譯錯誤)。
  • 嚴防陣列越界:int a[5]; a[5]=10; 合法但災難性(最大索引 4)。越界改寫未知記憶體,極難診斷(久後才崩潰)。
  • 大型陣列從堆積配置,非堆疊。
  • 堆積配置陣列可用變數指定長度:int x=10; int* a = new int[x];
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved