存储过程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语言变量的存储类别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 保留两位小数 占位_第17
- 下一篇: 安卓手机状态栏 定位服务自动关闭_手机该