C/C++零碎小知識

  1. 有關於main函數,用戶可以調用main函數。
#include <iostream>using namespace std;
​
int main(int argv, *argc[]){
    cout << "1" << endl;
    main();
}

對於以上的例子,實際上我們能夠直接調用main函數,輸出的結果其實爲一直遞歸調用輸出1直到棧溢出。

  1. 對於一個數組的數組名和同類型的指針的問題,我們可以將數組名看成一個指針,但是數組名不能被用於直接賦值爲一個字符串字面值。這樣會有錯誤。

  2. 關於C的標準化輸入和輸出問題:
    對於scanf來說,%f和%lf分別表示的是單精度和雙精度的浮點數。
    但是在printf中,%f則是單雙精度都有的浮點數。
    還有以下的一些標準化控制輸出符:
    - :表示左對齊
    %.xf :表示保留x位精度的小數
    f:表示的是單雙高精度的浮點數
    e:科學記數法

  3. 關於類的大小(sizeof類名)
    有關於類的繼承的相關的大小參見:
    http://www.cnblogs.com/BeyondTechnology/archive/2010/09/21/1832369.html
    1) 類的大小就是類的非靜態成員數據的類型大小之和,這樣也就是說靜態成員數據不會做考慮。
    2) 普通的成員函數與sizeof無關。
    3) 含有虛函數的類都會創建一張虛函數表,表中存放的是虛函數的函數指針(4個字節)。這個表的地址存放在類中。
    4) 類的總大小也遵循類似struct字節對齊的調整規則。

另:struct的佔用長度的計算方法介紹:
主要有兩個原則
1)各成員變量存放的起始地址相對於結構的起始地址的偏移量必須爲該變量的類型所佔用的字節數的倍數;
2) 爲了確保結構的大小位結構的字節邊界數(即該結構體中佔用最大空間的類型所佔用的字節數)的倍數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章