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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

存储过程debug值not a variable_C语言变量的存储类别

發布時間:2025/4/16 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储过程debug值not a variable_C语言变量的存储类别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在程序中經常會使用到變量,在C程序中可以選擇變量的不同存儲形式,其存儲類別分為靜態存儲和動態存儲。可以通過存儲類別修飾符來告訴編譯器要處理什么樣的類型變量,具體主要有自動(auto)、靜態(static)、寄存器(register)和外部(extern)4種。


一、靜態存儲與動態存儲

根據變量的產生時間,可將其分為靜態存儲和動態存儲。

靜態存儲是指程序運行時為其分配固定的存儲空間,動態存儲則是在程序運行期間根據需要動態地分配存儲空間。


二、auto變量

auto關鍵字用于定義一個局部變量為自動的,這意味著每次執行到定義該變量時,都會產生一個新的變量,并且對其重新進行初始化。

關鍵字auto時可以省略的,如果不特別指定,局部變量的存儲方式默認為自動的。

#include <stdio.h> #include <stdlib.h>void add_one(void) {auto int num = 1; /*定義auto整型變量*/num = num + 1; /*變量加1*/printf("%dn", num); /*顯示結果*/ }int main(void) {printf("第一次調用:");add_one(); /*調用add_one函數*/printf("第二次調用:");add_one(); /*調用add_one函數*/return EXIT_SUCCESS; /*程序結束*/ }

運行結果:

auto變量

源碼地址:https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/5.C%E8%AF%AD%E8%A8%80%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB/auto_variable.c


二、static變量

static變量為靜態變量,將函數的內部變量和外部變量聲明成static變量的意義是不一樣的。不過對于局部變量來說,static變量是和auto變量相對而言的。盡管兩者的作用域都僅限于聲明變量的函數之中,但是在語句塊執行期間,static變量將始終保持它的值,并且初始化操作只在第一次執行時起作用。在隨后的運行過程中,變量將保持語句塊上一次執行時的值。

#include <stdio.h> #include <stdlib.h>void add_one(void) {static int num = 1; /*定義static整型變量*/num = num + 1; /*變量加1*/printf("%dn", num); /*顯示結果*/ }int main(void) {printf("第一次調用:");add_one(); /*調用add_one函數*/printf("第二次調用:");add_one(); /*調用add_one函數*/return EXIT_SUCCESS; /*程序結束*/ }

運行結果:

static變量

源碼地址:https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/5.C%E8%AF%AD%E8%A8%80%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB/static_variable.c


三、register變量

register變量稱為寄存器存儲類變量。通過register變量,可以把某個局部變量指定存放在計算機的某個硬件寄存器中,而不是內存中。這樣做的好處是可以提高程序的運行速度。實際上,編輯器可以忽略register對變量的修飾。

用戶無法獲得寄存器變量的地址,因為絕大多數計算器的硬件寄存器都不占用內存地址。而且,即使編輯器忽略register,而把變量存放在可設定的內存中,也是無法獲取變量的地址的。

如果想有效地利用register關鍵字,必須像匯編語言那樣了解處理器的內部結構,知道可用于存放變量的寄存器的數量、種類以及工作方式。但是,不同的計算機對于這些細節可能是不同的,因此,對于一個要具備可移植的程序來說,register的作用并不大。

#include <stdio.h> #include <stdlib.h>int main(void) {register int num = 100; /*定義寄存器整型變量*/printf("%dn", num); /*顯示結果*/return EXIT_SUCCESS; /*程序結束*/ }

運行結果:

register變量

源碼地址:https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/5.C%E8%AF%AD%E8%A8%80%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB/register_variable.c


四、extern變量

extern變量稱為外部存儲變量。extern聲明了程序中將要用到但尚未定義的外部變量。通常,外部存儲類都用于聲明在另一個裝換單元中定義的變量。

一個工程是由多個C文件組成的。這些源代碼文件分別編譯,然后鏈接成一個可執行模塊。把這樣的一個程序作為一個工程進行管理,并且生成一個工程文件來記錄所包含的所有源代碼文件。

extern_variable_main:

#include <stdio.h> #include <stdlib.h>int main(void) {extern int num; /*定義外部整型變量*/printf("%dn", num); /*顯示變量值*/return EXIT_SUCCESS; /*程序結束*/ }

extern_variable:

int num = 100; /*定義一個整型變量,為其賦值為100*/

運行結果:

extern變量

源碼地址:https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/5.C%E8%AF%AD%E8%A8%80%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB/extern_variable_main.c、https://github.com/Hyacinth-fjk/CombinedLanguageIntroduction/blob/master/5.C%E8%AF%AD%E8%A8%80%E5%8F%98%E9%87%8F%E7%9A%84%E5%AD%98%E5%82%A8%E7%B1%BB%E5%88%AB/extern_variable.c

C語言變量的存儲類別https://www.zhihu.com/video/1194951082491768832

視頻下載地址:https://pan.baidu.com/s/1PSvTmX09xsh-Kv9CXvA_2Q

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的存储过程debug值not a variable_C语言变量的存储类别的全部內容,希望文章能夠幫你解決所遇到的問題。

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