前言
??哈嘍,各位鐵汁們好??!?今天來給大家?guī)淼氖浅踝R
C語言
里面的作用域
、常量
。
??這幾章主要帶大家簡單認(rèn)識-一下C語言,俗話說沒吃過豬肉,也見過豬跑。
帶大家了解下C語言??梢宰x懂C語言的簡單程序,后期會給大家詳細(xì)介紹C語言。
一、變量作用域和生命周期
作用域
-
作用域
(scope)是程序設(shè)計(jì)概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的而限定這個(gè)名字的可用性的代碼范圍就是這個(gè)名字的作用域。
那么局部變量和全局變量的作用域的范圍是多少呢?
局部變量的作用域
局部變量的作用域是變量所在的局部范圍。
因?yàn)榫植孔兞恐辉谒鶎?yīng)的代碼段生效,出了他所在的大括號就銷毀。
下面我們來看看這段代碼
int main()
{
{
int a = 6;
}
return 0;
}
像這個(gè)代碼就會報(bào)錯(cuò),因?yàn)?變量 a a a 只在他所在的大括號生效出去·就銷毀了。
int main()
{
{
int a = 100;
}
printf("%d\n", a);
return 0;
}
像這個(gè)代碼就不會報(bào)錯(cuò),因?yàn)?變量 a a a 只在他所在的大括號包含的范圍生效,而里面的大括號也在這個(gè)范圍所以可以使用。
全局變量的作用域
前面介紹了全局變量的的生效范圍是全局, 在不同
.c
文件也可以使用。
有因?yàn)槲覀兂绦蚴?code>main()函數(shù)開始出main函數(shù)結(jié)束
所以:全局變量的作用域是整個(gè)工程。
生命周期
變量的生命周期指的是變量的創(chuàng)建到變量的銷毀之間的一個(gè)時(shí)間段
局部變量的生命周期
局部變量是進(jìn)局部范圍開始創(chuàng)建,出了他的局部范圍就銷毀。
所以:
- 局部變量的生命周期是:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。
全局變量的生命周期
由于我們?nèi)肿兞康淖饔糜蚴钦麄€(gè)工程
而程序是從進(jìn)入main( )
函數(shù)開始,出main( )
函數(shù)結(jié)束。
那么是不是可以說:
- 全局變量的生命周期是:整個(gè)程序的生命周期。
二、常量
C語言中的常量分為以下以下幾種:
- 字面常量
-
const
修飾的常變量 -
#define
定義的標(biāo)識符常量 - 枚舉常量
1.1?字面常量
像我們直接寫出來的
數(shù)字3
字符a
字符串abcd
這些都是字面常量
下面我倆給大家演示一下
int main()
{
3;
3.15;
'a';
"abcd";
return 0;
}
- 給大家解釋一下單引號
' '
引起來的是字符。 - 雙引號
“ ”
引起來的是字符串。
1.2 ? const 飾的常變量
int main()
{
//常屬性
//這里的a是具有常屬性的,不能改變,但是本質(zhì)上還是變量
const int a = 3;
printf("%d\n", a);
a = 10;
printf("%d\n", a);
return 0;
}
這里我們用
const
關(guān)鍵字修飾了變量a,使這個(gè)變量具有了常屬性。
常屬性
就是不能被更改的屬性,從語法層面直接限制了這個(gè)變量
所以當(dāng)我們改變這個(gè)變量的時(shí)候程序就會給我們報(bào)錯(cuò),我們來看看!
- 他說左值指定的是
const
的對象所以不能修改,給我們報(bào)錯(cuò)了
那么我問大家一個(gè)問題?
- 我們一直在講
變量
和常量
- 那么由變量用
const
修飾的常變量
可以當(dāng)成常量用嗎? - 可以不可以實(shí)踐便知:來看下面這段代碼
int main()
{ //數(shù)組
const int n = 10;
int arr[n];
return 0;
}
他給我們的報(bào)錯(cuò)是這樣的,我來給大家解釋一下:
arr數(shù)組【】里面必須輸入常量表達(dá)式
誒,是不是很奇怪。
- 我們明明已經(jīng)將
變量 n
,用const
修飾成了常變量
為什么他還- 提示我們輸入常量呢?
這說明關(guān)鍵字const雖然把變量n修飾成了常變量。
但是變量a本質(zhì)上還是變量所以不能被當(dāng)來常量使用。
1.1 ?#define 定義的標(biāo)識符常量
什么是 #define 定義的標(biāo)識符常量呢?
#define MAX 10000
//符號名是MAX 本質(zhì)上代表的數(shù)字是10000
int main()
{
int a = MAX;
int arr[MAX] = {0};
printf("%c", a);
return 0;
}
#define MAX 10000
這里#define定義了一個(gè)MAX常量
- 符號名是
MAX
本質(zhì)上代表的數(shù)字是10000
- 這里代表的意思是10000本來是沒有什么意義的,
- 但是我們需要一個(gè)
最大值MAX
,我們把10000定義
成我們的最大值- 以后我們的最大值MAX代表的就是10000
所以我們賦給變量
a
a
a就是
10000
10000
10000這個(gè)數(shù)字
創(chuàng)建的數(shù)組
a
r
r
[
M
A
X
]
arr[MAX]
arr[MAX],是有
10000
10000
10000個(gè)元素
ps:
雖然暫時(shí)還沒有給各位鐵汁講數(shù)組但這里先讓大家見識一下
后面會給各位鐵汁詳細(xì)講解數(shù)組,看完秒懂!
1.1 ?枚舉常量
這里只是給大家簡單講解一下,后面會詳細(xì)講解
枚舉常量
- 枚舉 一一列舉
生活中有些值是可以一一列舉
- 性別:男、女、保密
- 三原色:red green blue
- 血型: o o o x x x
那么枚舉怎么定義呢?
enum SEX//性別
{
//列出了枚舉類型enum SEX的可能取值
//枚舉常量
MALE,//男
FEMALE,//女
SECRET//保密
};
這里我們就定義了一個(gè)枚舉常量SEX
,enum
代表的是枚舉類型
- MALE代表的是枚舉——列舉的類型
枚舉類型的值是多少呢?
我們來看一下
int main()
{
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
- 我們可以看到枚舉常量的默認(rèn)值是從0開始
- 依次遞增的。
枚舉類型的值怎么修改?
相信各位鐵汁們,都想說修改那不是很簡單直接改值不就完了。
int main()
{
enum SEX s = FEMALE;
printf("%d\n", MALE);
return 0;
}
但是大家可別忘,枚舉類型他可是個(gè)常量
。
怎么能這樣修改呢!
所以他肯定會給我們報(bào)錯(cuò)。
- 枚舉類型的常量想修改,只能修改初始值
enum SEX
{
MALE=4,
FEMALE,
SECRET
};
這里我們就把SEX這個(gè)枚舉類型
,MALE
的初始值修改成了4
所以程序運(yùn)行的結(jié)果是
我們也可以給每一個(gè)枚舉常量單獨(dú)賦值
enum SEX
{
//列出了枚舉類型enum SEX的可能取值
//枚舉常量
MALE=4,
FEMALE=8,
SECRET=11
};
文章來源:http://www.zghlxwxcb.cn/news/detail-489774.html
總結(jié)
好了今天主要是帶大家認(rèn)識變量和常量
總結(jié)一下今天學(xué)了:
??變量作用域
??變量的生命周期
??字面常量
??const 修飾的常變量
??#define 定義的標(biāo)識符常量
??枚舉常量
不知道大家掌握了沒有,希望對各位鐵汁有用呢!
看到這里了還不給博主扣個(gè)點(diǎn)贊
加收藏
!
?? ?? ?? ?? ???? ?? ?? ?? ?? ??
拜托拜托這個(gè)真的很重要!
你們的點(diǎn)贊就是博主更新最大的動力!
有問題可以評論或者私信呢秒回哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-489774.html
到了這里,關(guān)于教你快速了解C語言中的作用域和常量的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!