C語言非常見關鍵字

  • auto:當前變量的作用域爲當前函數或代碼段的局部變量,意味着當前變量會在內存棧上進行分配

  • const

    • 關鍵字const用來定義常量,如果一個變量被const修飾,那麼它的值就不能再被改變

    • const int n=5; int const n=5;(相等)

    • 常量指針是指針指向的內容是常量,不能通過這個指針改變變量的值,但是還是可以通過其他的引用來改變變量的值的。

     int a=5;
     int b=6;
     const int* n=&a;
     n=&b;
  • 指針常量是指指針本身是個常量(反着記),不能在指向其他的地址,地址中保存的數值是可以改變的
     int a=5;
     int *p=&a;
     int* const n=&a;
     *p=8;
  • extern:

    • 利用關鍵字extern,可以在一個文件中引用另一個文件中定義的變量或者函數(只有當一個變量是一個全局變量時,extern變量纔會起作用,且extern關鍵字只需要指明類型和變量名就行了,不能再重新賦值)
    • 利用extern關鍵字先聲明一下num變量,告訴編譯器num這個變量是存在的,但是不是在這之前聲明的,你到別的地方找
  • register:關鍵字暗示編譯程序相應的變量將會被頻繁的使用,如果可能的話,應將其保存在 CPU 的寄存器中,以加快其存取速度。

  • signed:有符號數值

  • static全局變量存儲在靜態數據區

    • 靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。
    • static局部變量只被初始化一次,下一次依據上一次結果值;
    • static函數與普通函數作用域不同,僅在本文件,對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件.
  • union結構體的各個成員會佔用不同的內存,互相之間沒有影響;而共用體的所有成員佔用同一段內存,修改一個成員會影響其餘所有成員。

  • volatile關鍵字可以用來提醒編譯器它後面所定義的變量隨時有可能改變,因此編譯後的程序每次需要存儲或讀取這個變量的時候,都會直接從變量地址中讀取數據。如果沒有volatile關鍵字,則編譯器可能優化讀取和存儲,可能暫時使用寄存器中的值

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