初級C++1--面向過程

全局變量 global variable
ios

    |--文件做用域 file scope數組

局部變量 local variable函數

    |--函數做用域 function scopespa

    |--塊做用域 block scopeprototype

    |--函數原型做用域 function prototype scope指針


存儲期 storage duration調試

    |--靜態存儲期 static storage duration    對變量分配固定的存儲空間orm

    |--動態存儲期 dynamic storage duration   對變量動態的分配存儲空間內存


內存分配劃分:   作用域

    |--程序區      存放代碼

    |--靜態存儲區     存放全局變量、靜態變量  程序開始分配,程序結束釋放

    |--動態存儲區     棧 存放局部變量              函數開始分配,函數結束釋放

                            堆 存放new出來的東西


存儲類別 storage class

    |--自動 auto

    |--寄存器 register

    |--靜態 static

    |--外部 extern


自動變量 auto variable

    auto int b,c=3; 等價於 int b,c=3;


寄存器變量

    register int i,f=1; //建議性,非強制性 瞭解便可


static

    |--靜態局部變量 static local variable

         函數內可見,函數外隱藏,存放在靜態存儲區

         在函數編譯時已經賦初值

    |--靜態外部變量

         某些全局變量僅限於本文件使用


extern 僅用於聲明

    |--在一個文件內聲明全局變量

        void main()

        {

    extern int a,b;  //提早引用聲明

        }

        int a=15, b=-7;  //a b 爲全局變量

                         //此方法等同於把全局變量放在全部引用它的函數以前(推薦)

    |--在多文件程序中聲明外部變量

        file1                     file2.cpp

        extern int a,b;       int a=3, b=4;

        讓file1能夠訪問file2的變量


定義:須要創建存儲空間 int a;

聲明:不需創建存儲空間 extern int a;



內部函數: 

    只能在本文件使用的函數

    staitc 類型標識符 函數名(形參列表)

外部函數:

    本文件定義函數時,在函數首部加extern(可省,默認添加)

extern int fun (int a, int b){}

    其餘文件調用函數時要先聲明(可省,默認添加)

        extern int fun (int a, int b);


函數聲明的做用:通知編譯系統,該函數在本文件中稍後定義,或在另外一文件中定義。

用函數原型可以把函數的做用域擴展到定義該函數的文件以外(extern可省)

只要在使用該函數的每個文件中包含該函數的函數原型便可


最多見的例子:#include 命令

頭文件裏面包含函數原型

函數定義放在函數庫中或單獨編譯成目標文件,在鏈接階段與用戶文件鏈接組成可執行文件


預處理——編譯——鏈接

預處理功能:

    |--宏定義

    |--文件包含

    |--條件編譯

以#頂格開頭,末尾不含;


宏定義:

    #define 標識符 字符串  // 已被const語句替換

        #defing PI 3.1415926

    #define 宏名(參數表) 字符串

        #define S(a,b) a*b

        S(3,2) 替換爲 3*2


文件包含:

    一個源文件將另外一個源文件的內容複製過來

    #include <文件名>  庫函數

    #include "文件名"  用戶自定義頭文件,建議用.h結尾 

    #include <iostream> 到系統目錄中找,若是沒有則出錯

    #include "C:\\tan\C++\file.c" 到指定目錄尋找,再到系統目錄找

    #include "file2.c" 到當前目錄找,再到系統目錄找


條件編譯

    #ifdef 標識符        #ifndef 標識符         #if 表達式

        程序段1    程序段1                    程序段1

    #else        #else                        #else

        程序段2    程序段2                    程序段2

    #endif        #endif                      #endif


調試時的應用:

#include <iostream>

using namespace std;

#define RUN

int main()

{

    int x=1, y=2, z=3;

    #ifdef RUN

        cout << "x=" << x << "y=" << y << "z=" << z << endl;

    #endif

    cout << "x+y+z=" << x*y*z << endl;

}


內置函數/內嵌函數/內聯函數 inline function

在編譯時將所調用函數的代碼直接嵌入到主調函數中

適用於規模小又被頻繁調用的函數,內置函數中不包括循環和switch語句

inline int max(int, int, int) //函數聲明

inline int max(int a, int b, int c){} //函數實現 二者之一有inline便可


函數重載 function overloading

不能出現:參數類型和個數相同,返回值不一樣的狀況


函數模板 function template

創建一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬類型來表示

這個通用函數就稱爲模板

適用狀況:函數體相同,函數參數個數相同而類型不一樣


template<typename T>

T max(T a, T b, T c)

{

    if (b>a)  a=b;

    if (c>a)  a=c;

    return a;

}


template<typename T>

通用函數定義

template<class T>  //能夠定義多個虛擬類型

通用函數定義


變量的地址稱爲該變量的指針

& 取地址運算符

* 間接訪問運算符(指針運算符)


int * p;  指向整型數據的指針變量

int * p[n]; 指針數組

int (*p)[n]; 指向數組的指針變量

int * p( );  返回值爲指針

int (*p)( ); 函數指針 p=fun; (*p)();//調用

int **p; 指向指針的指針變量


引用 

int a;

int &b = a; //b是a的別名,屬於地址傳遞。 必須在聲明時賦值

姓童 名林 字表海川  童海川是童林的引用

相關文章
相關標籤/搜索