當前位置:
首頁 > 知識 > 你對C了解嗎?深入理解C語言

你對C了解嗎?深入理解C語言

我們來看一段代碼:

#include

voidf(void)

{

staticinta = 3;

staticintb;

intc;

++a; ++b; ++c;

printf("a=%d
", a);

printf("b=%d
", b);

printf("c=%d
", c);

}

intmain(void)

{

f();

f();

f();

}

我相信你對a的輸出相當有把握,就分別是4,5,6,因為那個靜態變數。這個程序會輸出什麼?

對於c呢,你應該也比較肯定,那是一堆亂數。

但是你可能不知道b的輸出會是什麼?答案是1,2,3。為什麼和c不一樣呢?因為,如果要初始化,每次調用函數里,編譯器都要初始化函數棧空間,這太費性能了。但是c的編譯器會初始化靜態變數為0,因為這只是在啟動程序時的動作。

全局變數同樣會被初始化。

說到全局變數,你知道 靜態全局變數和一般全局變數的差別嗎?是的,對於static 的全局變數,其對鏈接器不可以見,也就是說,這個變數只能在當前文件中使用。

想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

從零開始系統學習C語言C加加,零基礎到項目實戰
為了解決C語言的不完美和缺陷,C加加的這些特性,你了解過么?
C語言編程——模擬鬥地主自動發牌
深入理解C語言的預編譯指令之 include

TAG:C加加 |

您可能感興趣

漢奸,你理解對了嗎?
你,理解我嗎?
如何理解「想」?
你了解古風嗎?你對它的理解是否正確呢?
對「言」的理解
「你得理解我」「理解你,理解你,那誰來理解我?」
如何理解「觸」?
如何理解「受」?
● 對不起!我無法理解你!
什麼是理解?
對不起!我無法理解你!
如何理解「不害」?
你對玉是如何理解的?
如何理解啟蒙?
我對「朋友」的理解
淺談我對OKR的理解
難以理解的韓國文化TOP3,你猜對了嗎?
你對智商的理解全面嗎?
理解歸理解,我還是想說:易烊千璽,你做錯了
您說什麼它都能理解?對話式搜索了解一下