C 常見錯誤總結

2021-07-27 21:16:00 字數 1386 閱讀 8603

1,字串」hello」會被輸出幾次?

int main()
這個題目,若不注意,會以為輸出三個hello。但是實際上輸出四個。但是:

print輸出字串如果不是一」\n」為結尾的話,就不會馬上輸出,而是儲存在快取區中。fork函式在建立子程序的時候會複製快取區的資料。

2,++i 和 i++作為引數傳入函式的情況分析

函式func的定義如下:

void func(const

int& v1, cont int& v2)

在visual studio開發環境下, 以下**輸出結果為__。

int main (int argc, char* argv)

在底層實現上,字首式返回的是物件的引用,而字尾式返回的是物件的值。同時引數傳遞順序是從右往左。

i++,首先將0壓棧。此時i的值變為1。然後執行++i。此時i變為2,傳入函式。所以輸出為2 ,0

3,建構函式中,成員變數一定要通過初始化列表來初始化的是:引用成員資料,以及const修飾的類成員。

4,棧和堆的區別:

a,對於棧來說,是由編輯器自動管理,無需手動控制;對於堆來說,釋放工作有程式設計師控制

b,對於棧,生長方向向上;對於堆生長方向向下。

c,

相關知識:

程式記憶體分割槽:

1,堆區:由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc(c語言)或new(c++)語言來分配,free(c語言)和delete(c++)語言來釋放。若程式設計師不釋放,,程式結束時由系統釋放。

2,棧區:由編譯器自動分配和釋放,存放函式引數,區域性變數得值等。操作方式類似於資料結構中的棧。

3,全域性靜態區:存放全域性變數和靜態變數。包括data段(全域性初始化區)與bss段(全域性未初始化區)。其中,初始化的全域性變數和靜態變數存放在data段,未初始化的全域性變數和未初始化的靜態變數存放在bss段。程式結束後由系統釋放。

4,文字常量區:常量字串存放在這裡。

5,程式**區:存放函式體的二進位制。

6,union的知識點

1,union中可以定義多個成員,union的大小由最大的成員的大小決定。

2,union成員共享同一塊記憶體,一次只能使用其中乙個成員。

3,對於某乙個成員賦值,會覆蓋其他成員的值(如果成員所佔位元組大小相同,則會覆蓋所有的值,如果不同,則只會覆蓋響應的位元組值)

4,聯合體union的存放順序是所有成員都從低位址開始存放。

常見錯誤總結

1.呼叫函式中使用的變數名與主函式中一致,沒有影響 include int isfullsquare int n int main 2.浮點數在賦值和計算中忘記加.0 3.忘記將布林變數 計數器變數 累加變數初始化為0 忘記將累乘變數初始化為1 注意初始化位置在迴圈內外的差別,對於多組資料的輸入應將...

常見錯誤總結

博主今天因為debug text debug 的事被教訓罵了所以記錄一下在debug text debug 的過程中都發現了什麼智障錯誤 取mod text mod的時候注意輸入也可能超出範圍,最好在輸入的時候取一下模。對於某些sb題請在讀入優化那個函式裡也取模 noip2014解方程 取模最好用函...

常見錯誤總結

線段樹合併常見錯誤點。合併之前 子樹線段樹是有效的 如果在merge處不新建節點那麼 兒子線段樹是無效的 這點一定要注意!因為這個時候兒子線段樹可能已經被修改了。那麼其實就有做法了在merge的時候新建節點不過這樣空間消耗最壞是nlogn 2的接受不了的話那麼就在遞迴和並的時候查詢兒子操作 不要放在...