日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 | 变量的存储方式

發布時間:2023/12/2 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 | 变量的存储方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言動態存儲方式與靜態存儲方式

靜態存儲方式是指在程序運行期間由系統分配固定的存儲空間的方式;動態存儲方式是在程序運行期間根據需要進行動態的分配存儲空間的方式。

內存中的供用戶使用的存儲空間可以分為3部分,

  • 程序區

  • 靜態存儲區

  • 動態存儲區

全局變量全部存放在靜態存儲區中,在程序開始執行時給全局變量分配存儲區,程序執行完畢就釋放。

在動態存儲區存放以下數據

  • 函數形式參數。

  • 函數中定義的沒有用關鍵字static聲明的變量,即自動變量。

  • 函數調用時的現場保護和返回地址等。

在C語言中,每一個變量和函數都有兩個屬性:

  • 數據類型

  • 數據的存儲類別。

C語言的存儲類別包括4種:

  • 自動的(auto)

  • 靜態的(static)

  • 寄存器的(register)

  • 外部的(extern)。

C語言局部變量的存儲類別

自動變量(auto變量)

  • 函數中的局部變量,如果不專門聲明static存儲類別,都是動態地分配存儲空間的,數據存儲在動態存儲區中。自動變量用關鍵字auto做存儲類別聲明。

靜態局部變量(static局部變量)

  • 函數中的局部變量的值在函數調用結束后不消失而繼續保留原值,即其占用的存儲單元不釋放,在下一次再調用該函數時,該變量已有值。

寄存器變量(register變量)

  • 為提高執行效率,允許將局部變量的值放在CPU中的寄存器中,需要用時直接從寄存器取出參加運算,不必再到內存中去存取。由于對寄存器的存取速度遠高于對內存的存取速度,因此這樣做可以提高執行效率,這種變量叫寄存器變量,用關鍵字register作聲明。

C語言全局變量的存儲類別

在一個文件內擴展外部變量的作用域

  • 如果由于某種考慮,在定義點之前的函數需要引用該外部變量,則應該在引用之前用關鍵字extern對該變量作“外部變量聲明”,表示把該外部變量的作用域擴展到此位置。

將外部變量的作用域擴展到其他文件。

將外部變量的作用域限制在本文件中。

注意,用auto、register和static聲明變量時,是在定義變量的基礎上加上這些關鍵字,而不能單獨使用。

C語言存儲類別案例

#include int?main() {auto?int?num1=10;register?int?num2=20;static?int?num3=30;printf("%d\n",num1);printf("%d\n",num2);printf("%d\n",num3);return?0; }

編譯運行結果:

10 20 30-------------------------------- Process exited after?0.04696?seconds?with?return?value?0 請按任意鍵繼續. . .

聲明:

本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

總結

以上是生活随笔為你收集整理的C语言 | 变量的存储方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。