C/C++ 語言 零碎知識點的總結(1)
在大學近三年的學習中,零零散散的遇到過較多的知識和問題,但時間過長之後也會有所遺忘,為了克服這個問題,想到可以用部落格來做記錄,友善模糊的時候回頭再學習。
首先,看代碼:
# include <stdio.h>
int main(void){
char side_a[] = "Side A";
char dont[] = { 'w','o','w','!'};
char side_b[] = "Side B";
puts(dont);
return 0;
}
你是不是會對運作結果有點小驚訝呢,覺得使用 puts函數輸出的不應該是dont中的 “wow!” 字元串麼?為什麼還會有Side A呢,又為什麼不能是後面的Side B呢
别擔心,部落客來為您解答。
知識點1 :puts()函數解析:
相信,此刻路過該博文的靓仔萌妹們,一定已經很熟悉puts()函數的正确使用了,不了解的話也沒關系嘛,部落客很細心的哈,已附上學習連結。
1. puts()函數百度百科
2. C語言puts()函數用法詳解
我們重回話題,沒錯,puts()函數最重要的一個點就是,puts函數是遇到結束符 “\0” 才會結束的,否則,計算機會在記憶體中向下尋找,直到遇到空字元才結束,是以,沒有結束标志的話,puts函數可能會輸出亂碼來。
知識點2 :C/C++ 各變量存儲的區域不同。
C/C++程式中各變量在記憶體中的存儲區域:
1. 記憶體棧區:存放局部變量名
2. 記憶體堆區:存放new或malloc出來的對象;
3. 常數區:存放局部變量或者全局變量的值;
4. 靜态區:用于存放全局變量或者靜态變量;
5. 代碼區:二進制代碼。
此外,C/C++是沒有垃圾回收機制的,是以,需及時的對堆資料進行銷毀回收,以防止記憶體洩露,就是我們熟悉的free()和delete()函數啦,而棧記憶體是動态釋放的。