C++基礎複習(一)

一、關於內存的一些基本概念

1.C++內置基本類型

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

2.C++的基本整型

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

3.內存分區

  • :由程序員手動分配和釋放,完全不同於數據結構中的堆,分配方式類似於鏈表。由malloc或new來分配,free和delete來釋放。若程序員不釋放,程序結束時由系統釋放。
  • :由編譯器自動分配和釋放,存放函數的參數值、局部變量的值等。操作方式類似於數據結構中的棧。
  • 全局(靜態)存儲區:存放全局變量和靜態變量。包括DATA段(全局初始化區)與BSS段(全局未初始化區)。其中,初始化的全局變量喝靜態變量存放在DATA段,未初始化的全局變量和未初始化的靜態變量存放在BSS段。程序結束後由系統釋放。
    其中BSS段的特點是:在程序執行之前會自動清0。所以,未初始化的全局變量和未初始化的靜態變量在程序執行之前已經成0了。
  • 文字常量區:常量字符串就是放在這裏的。程序結束後由系統釋放。
  • 程序代碼區:存放函數體的二進制代碼。
char *n = "hello world";	//其變量n位於棧上,其內容爲一個地址,指向文字常量區的“hello world”,
							//此時“hello world”在內存中只有一份拷貝;
char a[] = "hello world";	//字符數組a則不同,a是位於棧上的一個有12個元素的字符數組,
							//並且其在文字常量區有一份“hello world”的拷貝,一共有兩份拷貝;

二、數組

1.一維數組

  • 一維數組的聲明
    數組定義中的類型可以是內置數據類型或者類類型;除引用之外,數組元素的類型還可以是任意的複合類型。數組定義中類型不能使引用,即沒有引用數組,這是因爲引用的值是不能改變的,而數組中的元素必須是可以被賦值的。
    雖然沒有引用數組,但是數組可以被引用
int a[6] = {0, 2, 4, 6, 8, 10};
int (&p)[6] = a;	//p是數組a引用
  • 一維數組的初始化
    在定義數組時,可爲其元素提供一組用逗號分隔的初值,這些初值用花括號{}括起來,稱爲初始化列表。
    數組元素初始化時,若沒有顯示提供元素初值,則元素會被像普通變量一樣初始化;
  • 動態聲明一維數組
int *a = new int[n];
delete [] a;
  • C風格字符串和字符數組
    • 1.字符串常量:以雙引號括起來的字符串序列是字符串常量。爲了兼容C語言,C++中所有的字符串常量都由編譯器自動在末尾添加一個空字符。
    • 2.末尾添加了‘\0’的字符數組。

2.二維數組

  • C++規定,在聲明和初始化一個二維數組時,如果對二維數組的所有元素都賦值,則第一維可以省略。
  • 行優先存儲和列有限存儲:本質上來說,所有數組在內存中存儲都是一維線性的。不同語言採取的存儲方式不同,C++採取的是行優先存儲方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章