對於C sizeof 又有了進一步的認識

2021-06-28 22:19:04 字數 826 閱讀 7986

光陰似箭,也已經到了我要找工作的時間了,回想起自己的基礎知識還有非常多的不足,於是就想著再重新複習一下c++,看看是否會有更深入的理解。

在無意之中翻到《劍指offer》第二章時,看到了對於空類用sizeof時,得到的結果不是0,是1(跟不同的編譯器有關)這乙個猛然一看會超於常理的事實,我一下子感覺到自己的基礎是有很大差距的。於是我就又重新翻了《c++ primer》,上網搜尋有關這個知識點的部落格,看了之後才對這個知識點有了比較清晰的理解。

class a ;

上面這一簡單語句即宣告了乙個空類,用sizeof()操作之後返回為1。仔細想想還是可以理解的,如果為0的話,那豈不是每個例項化的物件位址不都一樣麼,所以肯定不會是0。

其實,如果 class a; a obj; 那麼sizeof(a)==sizeof(obj) 那麼sizeof(a)的大小和成員的大小總和是等於所有非靜態成員大小的總和。

乙個類中,虛函式、成員函式(包括靜態與非靜態)和靜態資料成員都不占用類物件的儲存空間的。計算占用空間的時候一定要考慮到整數對齊的問題,主要是要發揮cpu的效率。

借用下人家的總結:

類的大小:

1.為類的非靜態成員資料的型別大小之和.

2.由編譯器額外加入的成員變數的大小,用來支援語言的某些特性(如:指向虛函式的指標).

3.為了優化訪問效率,進行的邊緣調整(對齊).

4 與類中的建構函式,析構函式以及其他的成員函式無關.

bufferedReader進一步理解

public static void main string args string mystring system.out.println 請輸入明文 bufferedreader buf new bufferedreader new inputstreamreader system.in try...

Looper Handler進一步學習

package com.test.looper import android.os.bundle import android.os.handler import android.os.handlerthread import android.os.looper import android.os....

進一步了解Makefile

mkdir p add src 一層一層建立目錄。touch add makefile 建立 makefile include 目錄中存放標頭檔案。scripts 存放指令碼檔案。存放方式 按照核心管理原始碼來管理。為什麼學習makefile?編譯大型專案 讀懂別人的開源 找到程式入口 看專案的順序...