一點C 基本知識

2021-05-08 02:05:09 字數 1438 閱讀 1437

有些知識雖然在開發中不是常用,但是要用到的時候不會就麻煩了。。有些會很偏(因為的用的不多)

c++ 中 union 聯合的概念,一看便清楚

#i nclude

union

a;void main()

答案:266 (低位低位址,高位高位址,記憶體占用情況是ox010a)

18.關聯、聚合(aggregation)以及組合(composition)的區別?

涉及到uml中的一些概念:關聯是表示兩個類的一般性聯絡,比如「學生」和「老師」就是一種關聯關係;聚合表示has-a的關係,是一種相對鬆散的關係,聚合類不需要對被聚合類負責,如下圖所示,用空的菱形表示聚合關係:從實現的角度講,聚合可以表示為:

class a   class b

而組合表示contains-a的關係,關聯性強於聚合:組合類與被組合類有相同的生命週期,組合類要對被組合類負責,採用實心的菱形表示組合關係:實現的形式是:

class a class b

有哪幾種情況只能用intialization list 而不能用assignment?

答案:當類中含有const、reference 成員變數;基類的建構函式都需要初始化表

描述記憶體分配方式以及它們的區別?

1) 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。

2) 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集。

3) 從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc 或new 申請任意多少的記憶體,程式設計師自己負責在何時用free 或delete 釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活,但問題也最多。

簡述陣列與指標的區別?

陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。

(1)修改內容上的差別

char a = 「hello」;

a[0] = 『x』;

char *p = 「world」; // 注意p 指向常量字串

p[0] = 『x』; // 編譯器不能發現該錯誤,執行時錯誤

(2) 用運算子sizeof 可以計算出陣列的容量(位元組數)。sizeof(p),p 為指標得到的是乙個指標變數的位元組數,而不是p 所指的記憶體容量。c++/c 語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

char a = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 位元組

cout<< sizeof(p) << endl; // 4 位元組

計算陣列和指標的記憶體容量

void func(char a[100])

Oracle入門基本知識一點通

oracle入門基本知識一點通 2003 8 26 14 15 00 oracle 基本知識輕鬆學 1.乙個表空間只能屬於乙個資料庫。2.每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 3.每個資料庫最少有乙個表空間 system表空間 4.建立system表空間的目的是盡量將目的相同...

C 基本知識點

繼承 語法 class 子類 繼承方式 父類 如果子類 現和父類同名的成員函式,子類中的同名成員會隱藏掉父類中所有同名成員函式,如果想訪問父類中被隱藏的同名成員函式,需要加作用域。動態多型滿足條件 1 有繼承關係 2 子類重寫父類的虛函式 動態多型使用 父類的指標或者引用 執行子類物件 includ...

基本知識點

1 程序和執行緒的關係 1 在有執行緒的作業系統裡面,程序是分配資源的基本單位,執行緒是排程的基本單位。2 1個程序可以擁有多個執行緒 3 執行緒同時也有一些自己的資源,包括 程式計數器,堆疊等 4 因為執行緒所擁有的資源比較少,因此進行排程的時候所消耗的資源就少。5 執行緒共享程序的 段,程序的一...