官术网_书友最值得收藏!

第1篇 程序設計基礎及數據結構基礎

基本概念

1.C++內置類型

內置的C++類型分兩組,基本類型和復合類型。基本類型包括整數、浮點數及兩者的多種變體。復合類型包括數組、字符串、指針、引用、結構體和共用體等。

2.C++的基本整型

按寬度遞增的順序排列,分別是char、short(也可稱為短整型)、int(也可稱為整型)和long(也可稱為長整型),其中每種類型都有無符號版本和有符號版本。

3.內存分區

1)堆:由程序員手動分配和釋放,完全不同于數據結構中的堆,分配方式類似鏈表。由malloc(C語言)或new(C++)來分配,free(C語言)和delete(C++)釋放。若程序員不釋放,程序結束時由系統釋放。

2)棧:由編譯器自動分配和釋放的,存放函數的參數值、局部變量的值等。操作方式類似數據結構中的棧。

3)全局(靜態)存儲區:存放全局變量和靜態變量。包括DATA段(全局初始化區)與BSS段(全局未初始化區)。其中,初始化的全局變量和靜態變量存放在DATA段,未初始化的全局變量和未初始化的靜態變量存放在BSS段。程序結束后由系統釋放。

其中BSS段的特點是:在程序執行之前BSS段會自動清0。所以,未初始的全局變量與靜態變量在程序執行之前已經成0了。

4)文字常量區:常量字符串就是放在這里的。程序結束后由系統釋放。

5)程序代碼區:存放函數體的二進制代碼。

注意:請牢記內存分區的概念,后面多有涉及。

例1:以下代碼有助于理解上述概念。

      int k=1;
      void main(){
            int i=1;
            char *j;
            static int m=1;
            char *n="hello";/*變量n位于棧上,其內容為一地址,指向位于文字常量區的"hello",
                  此時"hello"在內存中只有一份拷貝;而語句“char a[]="hello";”則不同,
                  a是一個位于棧上的有6個元素(含字符串末尾的空字符)的數組,并將"hello"
                  拷貝到它所占的內存中,此時"hello"有兩份拷貝。*/
            printf("棧區地址為:0X%x\n", &i);
            j=(char*)malloc(2);
            free(j);//及時釋放
            printf("堆區地址為:0X%x\n", j);
            printf("全局變量地址為:0X%x\n", &k);
            printf("靜態變量地址為:0X%x\n", &m);
            printf("文字常量區地址為:0X%x\n", n);
            printf("程序區地址為:0X%x\n", &main);
      }
主站蜘蛛池模板: 高密市| 砚山县| 博兴县| 弋阳县| 天水市| 白银市| 深圳市| 延吉市| 额敏县| 浪卡子县| 敦煌市| 鄱阳县| 广元市| 绍兴县| 攀枝花市| 溆浦县| 左贡县| 平湖市| 巴彦淖尔市| 庐江县| 台江县| 龙南县| 略阳县| 成武县| 井研县| 眉山市| 当阳市| 米林县| 沅江市| 怀化市| 平舆县| 贵州省| 犍为县| 崇礼县| 黔西县| 陕西省| 垣曲县| 芜湖县| 勐海县| 宁安市| 宁强县|