一文教你快速了解C語言中的作用域和常量
前言
哈嘍,各位鐵汁們好?。?今天來給大家?guī)淼氖浅踝RC語言里面的作用域、常量。
這幾章主要帶大家簡單認識-一下C語言,俗話說沒吃過豬肉,也見過豬跑。帶大家了解下C語言。可以讀懂C語言的簡單程序,后期會給大家詳細介紹C語言。
一、變量作用域和生命周期
作用域
作用域(scope)是程序設計概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的而限定這個名字的可用性的代碼范圍就是這個名字的作用域。
那么局部變量和全局變量的作用域的范圍是多少呢?
局部變量的作用域
局部變量的作用域是變量所在的局部范圍。
因為局部變量只在他所對應的代碼段生效,出了他所在的大括號就銷毀。
下面我們來看看這段代碼
int main() { { int a = 6; } return 0; }
像這個代碼就會報錯,因為 變量 a a a 只在他所在的大括號生效出去·就銷毀了。
int main() { { int a = 100; } printf("%d\n", a); return 0; }
像這個代碼就不會報錯,因為 變量 a a a 只在他所在的大括號包含的范圍生效,而里面的大括號也在這個范圍所以可以使用。
全局變量的作用域
前面介紹了全局變量的的生效范圍是全局, 在不同
.c
文件也可以使用。
有因為我們程序是main()函數開始
出main函數結束
所以:全局變量的作用域是整個工程。
生命周期
變量的生命周期指的是變量的創(chuàng)建到變量的銷毀之間的一個時間段
局部變量的生命周期
局部變量是進局部范圍開始創(chuàng)建,出了他的局部范圍就銷毀。
所以:
局部變量的生命周期是:進入作用域生命周期開始,出作用域生命周期結束。
全局變量的生命周期
由于我們全局變量的作用域是整個工程
而程序是從進入main( )
函數開始,出main( )
函數結束。
那么是不是可以說:
全局變量的生命周期是:整個程序的生命周期。
二、常量
C語言中的常量分為以下以下幾種:
- 字面常量
const
修飾的常變量#define
定義的標識符常量- 枚舉常量
2.1 字面常量
像我們直接寫出來的
數字3
字符a
字符串abcd
這些都是字面常量
下面我倆給大家演示一下
int main() { 3; 3.15; 'a'; "abcd"; return 0; }
給大家解釋一下單引號 ' '
引起來的是字符。
雙引號“ ”
引起來的是字符串。
2.2 const 飾的常變量
int main() { //常屬性 //這里的a是具有常屬性的,不能改變,但是本質上還是變量 const int a = 3; printf("%d\n", a); a = 10; printf("%d\n", a); return 0; }
這里我們用
常屬性就是不能被更改的屬性,從語法層面直接限制了這個變量const
關鍵字修飾了變量a,使這個變量具有了常屬性。所以當我們改變這個變量的時候程序就會給我們報錯,我們來看看!
他說左值指定的是const
的對象所以不能修改,給我們報錯了
那么我問大家一個問題?
- 我們一直在講變量和常量
- 那么由變量用
const
修飾的常變量可以當成常量用嗎? - 可以不可以實踐便知:來看下面這段代碼
int main() { //數組 const int n = 10; int arr[n]; return 0; }
他給我們的報錯是這樣的,我來給大家解釋一下:
arr數組【】里面必須輸入常量表達式
我們明明已經將
誒,是不是很奇怪。變量 n
,用const修飾成了常變量為什么他還提示我們輸入常量呢?
這說明關鍵字const雖然把變量n修飾成了常變量。但是變量a本質上還是變量所以不能被當來常量使用。
1.1 #define 定義的標識符常量
什么是 #define 定義的標識符常量呢?
#define MAX 10000 //符號名是MAX 本質上代表的數字是10000 int main() { int a = MAX; int arr[MAX] = {0}; printf("%c", a); return 0; }
#define MAX 10000
這里#define定義了一個MAX常量
- 符號名是
MAX
本質上代表的數字是10000
- 這里代表的意思是10000本來是沒有什么意義的,
- 但是我們需要一個
最大值MAX
,我們把10000定義
成我們的最大值- 以后我們的最大值MAX代表的就是10000
所以我們賦給變量 a a a就是 10000 10000 10000這個數字
創(chuàng)建的數組 a r r [ M A X ] arr[MAX] arr[MAX],是有 10000 10000 10000個元素
ps:
雖然暫時還沒有給各位鐵汁講數組但這里先讓大家見識一下
后面會給各位鐵汁詳細講解數組,看完秒懂!
1.1 枚舉常量
這里只是給大家簡單講解一下,后面會詳細講解
枚舉常量
枚舉 一一列舉
生活中有些值是可以一一列舉
性別:男、女、保密
三原色:red green blue
血型: o oo x xx
那么枚舉怎么定義呢?
int main() { printf("%d\n", MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); return 0; }
這里我們就定義了一個枚舉常量SEX
,enum
代表的是枚舉類型
MALE代表的是枚舉——列舉的類型
枚舉類型的值是多少呢?
我們來看一下
int main() { printf("%d\n", MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); return 0; }
我們可以看到枚舉常量的默認值是從0開始依次遞增的。
枚舉類型的值怎么修改?
相信各位鐵汁們,都想說修改那不是很簡單直接改值不就完了。
int main() { enum SEX s = FEMALE; printf("%d\n", MALE); return 0; }
但是大家可別忘,枚舉類型他可是個常量。
怎么能這樣修改呢!
所以他肯定會給我們報錯。
枚舉類型的常量想修改,只能修改初始值
enum SEX { MALE=4, FEMALE, SECRET };
這里我們就把SEX這個枚舉類型
,MALE
的初始值修改成了4
所以程序運行的結果是
我們也可以給每一個枚舉常量單獨賦值
enum SEX { //列出了枚舉類型enum SEX的可能取值 //枚舉常量 MALE=4, FEMALE=8, SECRET=11 };
總結
好了今天主要是帶大家認識變量和常量
總結一下今天學了:
變量作用域
變量的生命周期
字面常量
const 修飾的常變量
#define 定義的標識符常量
枚舉常量
不知道大家掌握了沒有,希望對各位鐵汁有用呢!
到此這篇關于C語言中的作用域和常量的文章就介紹到這了,更多相關C語言作用域和常量內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
數組名不等于指針?sizeof()函數求數組大小錯誤問題及解決
這篇文章主要介紹了數組名不等于指針?sizeof()函數求數組大小錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11Visual?Studio?2022?安裝低版本?.Net?Framework的圖文教程
這篇文章主要介紹了Visual?Studio?2022?如何安裝低版本的?.Net?Framework,首先打開?Visual?Studio?Installer?可以看到vs2022?只支持安裝4.6及以上的版本,那么該如何安裝4.6以下的版本,下面將詳細介紹,需要的朋友可以參考下2022-09-09使用?c++?在?windows?上定時執(zhí)行一個函數的示例代碼
這篇文章主要介紹了使用c++在windows上穩(wěn)定定時執(zhí)行一個函數,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07