0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言最雞肋的關(guān)鍵字

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-02-09 14:49 ? 次閱讀

220ef0d8-9725-11ed-bfe3-dac502259ad0.png

C語言的關(guān)鍵字有很多,要說最不常見的,我覺得應(yīng)該是auto。 說它不常見,因為很多時候,我們都把它給省略了。 比如在函數(shù)內(nèi)部定義變量a,正常人都會這樣寫:

void function()
{
    int a;
}
很少有人會在前面加一個auto:
void function()
{
    auto int a;
}
其實這兩種寫法是等價的,嚴(yán)謹(jǐn)一點,在C語言中是等價的。 那auto關(guān)鍵字是不是雞肋般的存在? auto聲明的變量我們把它稱作自動變量,所謂自動變量,就是定義的時候自動分配內(nèi)存,函數(shù)運行結(jié)束后內(nèi)存自動釋放,所以你完全可以把它理解成局部變量。 它的作用跟static正好相反,static修飾的變量因為存放在靜態(tài)數(shù)據(jù)區(qū),所以即使函數(shù)調(diào)用結(jié)束了,變量也不會被釋放。
void function()
{
    static int num = 0;
    num++;
    printf("num = %d
", num);
}


int main()
{
    int i;
    for (i = 0; i < 3; i++)
    {
        function();
    }
    return 0;
}
我覺得auto存在的意義,可能就是跟static靜態(tài)變量、register寄存器變量、extern外部變量區(qū)分開。

22572844-9725-11ed-bfe3-dac502259ad0.png

auto關(guān)鍵字的使用注意事項. 第一個,全局變量不能用auto修飾,編譯會報錯。
auto int num = 0;     //錯誤


int main()
{
    return 0;
}
第二個,在C語言中,使用auto聲明的變量可以沒有類型,比如直接來個auto a,編譯器會自動把a(bǔ)當(dāng)作整型數(shù)據(jù)。
int main()
{
    auto a;
}
編譯結(jié)果:
root@Turbo:test# gcc test.c -o test
test.c: In function ‘main’:
test.c:5:7: warning: type defaults to ‘int’ in declaration of ‘a(chǎn)’ [-Wimpli
cit-int]    5 |  auto a;
      |       ^
root@Turbo:test#
第三個,在C++中,auto是一個類型說明符,編譯器可以通過初始化的結(jié)果來判斷變量的類型,前提是變量一定得初始化,否則就會報錯。
int main()
{
autoa=1.1;//編譯器判斷a的類型為double


    return 0;
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135585
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    609

    瀏覽量

    28288

原文標(biāo)題:C語言最雞肋的關(guān)鍵字

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言關(guān)鍵字--typedef

    C語言關(guān)鍵字使用方法學(xué)習(xí)指南!
    的頭像 發(fā)表于 10-07 12:44 ?111次閱讀

    使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測

    電子發(fā)燒友網(wǎng)站提供《使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測.pdf》資料免費下載
    發(fā)表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進(jìn)行<b class='flag-5'>關(guān)鍵字</b>檢測

    typedef struct和直接struct的區(qū)別

    C語言中, typedef 和 struct 是兩種不同的關(guān)鍵字,它們在定義和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C
    的頭像 發(fā)表于 08-20 10:58 ?1911次閱讀

    快速掌握C語言關(guān)鍵字

    C語言中的32個關(guān)鍵字你知道多少個呢?根據(jù)關(guān)鍵字的作用分為四類:數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字
    的頭像 發(fā)表于 07-06 08:04 ?249次閱讀
    快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>關(guān)鍵字</b>

    C語言中的typedef的應(yīng)用

    C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節(jié)數(shù)字定義了一個術(shù)語 BYTE。
    發(fā)表于 03-06 11:34 ?303次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中的typedef的應(yīng)用

    嵌入式C語言面試大挑戰(zhàn)

    C++中static關(guān)鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態(tài)數(shù)據(jù)成員和靜態(tài)成員方法靜態(tài)數(shù)據(jù)成員
    發(fā)表于 03-05 14:18 ?249次閱讀
    嵌入式<b class='flag-5'>C</b><b class='flag-5'>語言</b>面試大挑戰(zhàn)

    關(guān)鍵字搜索文件夾中某個TXT文件

    文件夾中隨時創(chuàng)造TXT文件,如何及時選出剛創(chuàng)造的文件?或關(guān)鍵字搜索出需要的TXT文件?
    發(fā)表于 02-06 15:22

    在NVM和本地\"內(nèi)存中定義數(shù)組(靜態(tài) /global /local)的\"關(guān)鍵字是什么?

    在 NVM 和本地\"內(nèi)存中定義數(shù)組(靜態(tài) /global /local)的\"關(guān)鍵字是什么? 還有與 32 位對齊的關(guān)鍵字怎么樣。
    發(fā)表于 01-25 07:52

    探討多線程編程中的volatile關(guān)鍵字應(yīng)用

    有時候,我們可能需要在指針類型之間進(jìn)行轉(zhuǎn)換,而編譯器會認(rèn)為這是不安全的操作,從而導(dǎo)致編譯錯誤。使用volatile關(guān)鍵字可以告知編譯器,這個類型轉(zhuǎn)換是有意義的,不應(yīng)該引發(fā)錯誤。
    發(fā)表于 12-27 13:53 ?385次閱讀

    你還記得這個C語言關(guān)鍵字嗎?

    當(dāng)你使用volatile關(guān)鍵字時,你告訴編譯器該變量的值可能會在程序的執(zhí)行過程中被外部因素更改,因此編譯器不應(yīng)該對該變量的讀寫進(jìn)行優(yōu)化。下面是一些使用volatile的例子,以及對它們的一些文字描述
    的頭像 發(fā)表于 12-17 08:00 ?311次閱讀
    你還記得這個<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>關(guān)鍵字</b>嗎?

    vlookup提取關(guān)鍵字匹配多個結(jié)果

    是它能夠基于關(guān)鍵字匹配提取多個結(jié)果。 當(dāng)使用VLOOKUP提取多個結(jié)果時,需要遵循以下幾個重要步驟。首先,您需要確保數(shù)據(jù)的組織和結(jié)構(gòu)正確。數(shù)據(jù)應(yīng)以表格格式排列,左側(cè)為關(guān)鍵字列,右側(cè)為相應(yīng)的信息列。 首先,讓我們考慮一個實際的例子。假設(shè)您有一個大型數(shù)據(jù)集
    的頭像 發(fā)表于 12-01 10:40 ?2176次閱讀

    static關(guān)鍵字的三種用法

    C語言中,關(guān)鍵字"static"可以用于不同的上下文,具有不同的作用。以下是"static"在C語言中的主要作用:1.靜態(tài)
    的頭像 發(fā)表于 11-10 08:00 ?460次閱讀
    static<b class='flag-5'>關(guān)鍵字</b>的三種用法

    IAR能否在整個工程中搜索關(guān)鍵字?

    像mdk可以在整個工程中搜索關(guān)鍵字 IAR應(yīng)該也有類似的功能吧,但是我貌似沒有找到
    發(fā)表于 11-08 07:21

    指向code區(qū)數(shù)組的指針需不需要加code關(guān)鍵字的聲明?

    指向code區(qū)數(shù)組的指針需不需要加code 關(guān)鍵字的聲明?
    發(fā)表于 11-02 06:16

    如何綁架C語言標(biāo)準(zhǔn)庫函數(shù)?

    C語言動態(tài)內(nèi)存可以使用 malloc 標(biāo)準(zhǔn)庫函數(shù),而 C++ 會使用 new 關(guān)鍵字申請,裸機(jī)情況下一般沒有問題,但是在 RTOS 情況下,就需要考慮資源保護(hù)的情況
    發(fā)表于 11-01 09:50 ?302次閱讀