国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語(yǔ)言之static關(guān)鍵字詳解

這篇具有很好參考價(jià)值的文章主要介紹了C語(yǔ)言之static關(guān)鍵字詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

?前言:

一、幾個(gè)概念

1.變量

2.局部變量和全局變量

3.變量的作用域

4.變量的生命周期

二、static關(guān)鍵字的作用

三、static關(guān)鍵字修飾局部變量

四、static關(guān)鍵字修飾全局變量

?五、static關(guān)鍵字修飾函數(shù)

?寫在最后:


?前言:

? ? ? ? ? ?static,英文意思靜態(tài)的,作為C語(yǔ)言常用關(guān)鍵字中一個(gè)很重要的關(guān)鍵字,其用法多樣且比較難以理解。

一、幾個(gè)概念

? ? ? ? ?首先,介紹幾個(gè)與static關(guān)鍵字用法有關(guān)的重要概念,便于后面知識(shí)的更好理解。

1.變量

? ?變量:C語(yǔ)言中可變化的值用變量來(lái)表示

變量的命名規(guī)則:

(1)只能由字母(包括大寫和小寫)、數(shù)字下劃線(_)組成

(2)不能數(shù)字開頭

(3)長(zhǎng)度不超過(guò)63個(gè)字符

(4)變量名區(qū)分大小寫

(5)變量名不能使用關(guān)鍵字

2.局部變量和全局變量

? ?這里展示一段代碼示例。

#include<stdio.h>

int a = 2020;//全局變量
int main()
{
	int b = 2021;//局部變量
	int a = 2023;//局部變量
	printf("a = %d", a);
	return 0;
}

總結(jié):

局部變量:定義在函數(shù)體內(nèi)部的變量,只能在函數(shù)體內(nèi)部使用。

全局變量:定義在函數(shù)體外部的變量,在整個(gè)程序中都可以使用。?

? ? ? ?我們?cè)倏悼瞪厦孢@段代碼會(huì)發(fā)現(xiàn),變量a既為全局變量又為局部變量,即出現(xiàn)了局部變量和全局變量同名的情況,輸出變量a,運(yùn)行結(jié)果如下:

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

?總結(jié):允許局部變量和全局變量同名,且同名的時(shí)候,局部變量?jī)?yōu)先使用。

3.變量的作用域

? ?作用域:一段程序代碼中所用到的名字并不總是有效或者可用,而限定這個(gè)名字可用性的代碼范圍就是這個(gè)名字的作用域。

(1)局部變量的作用域是變量所在的局部范圍。

(2)全局變量的作用域是整個(gè)工程。

4.變量的生命周期

變量的生命周期:變量的創(chuàng)建到變量的銷毀之間的一個(gè)時(shí)間段。

(1)局部變量的生命周期:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。

(2)全局變量的生命周期:整個(gè)程序的生命周期。

二、static關(guān)鍵字的作用

? ? ? ?在C語(yǔ)言中,static關(guān)鍵字是用來(lái)修飾變量和函數(shù)的。

? ? ? ?1.修飾局部變量(稱為靜態(tài)局部變量)

? ? ? ?2.修飾全局變量(稱為靜態(tài)全局變量)

? ? ? ?3.修飾函數(shù)(稱為靜態(tài)函數(shù))

三、static關(guān)鍵字修飾局部變量

? ? ? ?我們?nèi)匀幌日故疽欢问纠a:

#include<stdio.h>

void text()
{
	int a = 0;
	a++;
	printf("%d ", a);
}
int main()
{
	int i= 0;
	for (i= 0; i < 10; i++)
	{
		text();
	}
	return 0;
}

? ? ?main函數(shù)中使用for循環(huán),將text函數(shù)循環(huán)十次。代碼中變量a作為局部變量,text函數(shù)中a初始值為0,a++后a的值為1,打印輸出1,a每次循環(huán)進(jìn)入text函數(shù)創(chuàng)建,出text函數(shù)銷毀。故程序最后運(yùn)行結(jié)果為10個(gè)1。

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

我們用static修飾text函數(shù)中的局部變量a,代碼如下:

#include<stdio.h>

void text()
{
	static int a = 0;
	a++;
	printf("%d ", a);
}
int main()
{
	int i= 0;
	for (i= 0; i < 10; i++)
	{
		text();
	}
	return 0;
}

運(yùn)行結(jié)果如下:

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#?

? ? ? ?我們可以發(fā)現(xiàn),當(dāng)static修飾局部變量a時(shí),程序運(yùn)行結(jié)果為1到10。由運(yùn)行結(jié)果分析,當(dāng)static修飾局部變量a后,變量a在text函數(shù)中進(jìn)入后創(chuàng)建,出函數(shù)并未后銷毀,而是保留了上一次循環(huán)a出text函數(shù)后的值繼續(xù)作用,即局部變量a被static關(guān)鍵字修飾后,作用域不變,生命周期變長(zhǎng)了。

? ? ? 本質(zhì)上來(lái)講的話,需要簡(jiǎn)單了解以下知識(shí)。

? ? ? 內(nèi)存可分為棧區(qū)、堆區(qū)、靜態(tài)區(qū)(也可稱為全局區(qū))等。棧區(qū)存放函數(shù)的參數(shù)值、局部變量的值等,這些數(shù)據(jù)進(jìn)入作用域創(chuàng)建,出作用域被銷毀。堆區(qū)用于動(dòng)態(tài)內(nèi)存分配等。靜態(tài)區(qū)存儲(chǔ)全局變量和靜態(tài)變量,這些變量創(chuàng)建好后,直到程序結(jié)束后才釋放。

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

總結(jié):

(1)static關(guān)鍵字修飾局部變量不改變作用域,但是生命周期變長(zhǎng)

(2)本質(zhì)上,static關(guān)鍵字修飾局部變量,改變了局部變量的存儲(chǔ)位置,因?yàn)榇鎯?chǔ)位置的差異,使得執(zhí)行效果不一樣。普通的局部變量放在棧區(qū),這種局部變量進(jìn)入作用域創(chuàng)建,出作用域釋放。局部變量被static修飾后成為靜態(tài)局部變量,這種變量放在靜態(tài)區(qū),創(chuàng)建好后,直到程序結(jié)束后才釋放。

四、static關(guān)鍵字修飾全局變量

? ? ? ?首先展示代碼,我們?cè)谕粋€(gè)工程中創(chuàng)建兩個(gè)源文件,在左邊源文件中定義全局變量a的值,在右邊源文件中使用關(guān)鍵字extern,聲明外部變量a。

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

? ? ? ? 在右邊源文件中打印輸出a的值為2022,運(yùn)行結(jié)果如下:

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

若用static關(guān)鍵字修飾左邊源文件里的全局變量a,再次運(yùn)行右邊源文件,運(yùn)行結(jié)果出錯(cuò):

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

?總結(jié):

(1)全局變量本身具有外部鏈接屬性,可使用extern關(guān)鍵字聲明外部文件變量,實(shí)現(xiàn)跨文件變量使用。但是如果全局變量被static關(guān)鍵字修飾后,這個(gè)外部鏈接屬性就變成了內(nèi)部鏈接屬性,全局變量作用域變小,全局變量只能在自己所在的源文件內(nèi)部使用。

(2)static關(guān)鍵字修飾全局變量,不改變生命周期,作用域變小

?五、static關(guān)鍵字修飾函數(shù)

? ? ? ?static關(guān)鍵字修飾函數(shù)與修飾全局變量相似,我們?cè)谕粋€(gè)工程中創(chuàng)建兩個(gè)源文件,在左邊源文件中定義函數(shù)max,在右邊源文件中使用關(guān)鍵字extern,聲明外部函數(shù)max。

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

? ? ? ?在右邊源文件中打印輸出max的值為2,運(yùn)行結(jié)果如下:

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

? ? ? ?若用static關(guān)鍵字修飾左邊源文件里的函數(shù)max,再次運(yùn)行右邊源文件,運(yùn)行結(jié)果出錯(cuò):

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

c語(yǔ)言static,c語(yǔ)言,開發(fā)語(yǔ)言,c#

?總結(jié):函數(shù)本身具有外部鏈接屬性,可使用extern關(guān)鍵字聲明外部文件函數(shù),實(shí)現(xiàn)跨文件函數(shù)使用。但是如果函數(shù)被static關(guān)鍵字修飾后,函數(shù)只能在自己所在的源文件內(nèi)部使用,不能在其他源文件內(nèi)使用。

?寫在最后:

? ? ? ?我們可以使用static關(guān)鍵字修飾變量或者函數(shù)防止被誤引用,如果不是對(duì)外提供的全局變量和函數(shù),最好都用static關(guān)鍵字修飾,保證數(shù)據(jù)安全。

? ? ? ?我們下次見(jiàn)咯~~~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-774157.html

到了這里,關(guān)于C語(yǔ)言之static關(guān)鍵字詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 詳解const、static關(guān)鍵字

    詳解const、static關(guān)鍵字

    目錄 ? 一、static 二、const 在c語(yǔ)言中: static是用來(lái)修飾變量和函數(shù)的 ? ? ? ? 1.修飾局部變量——稱為靜態(tài)局部變量 ? ? ? ? 2.修飾全局變量——稱為靜態(tài)全局變量 ? ? ? ? 3.修飾函數(shù)——稱為靜態(tài)函數(shù) 有關(guān)內(nèi)存相關(guān)知識(shí)補(bǔ)充: 程序的所有數(shù)據(jù),也就是所有的

    2024年02月06日
    瀏覽(24)
  • 【C】static關(guān)鍵字詳解

    【C】static關(guān)鍵字詳解

    static的漢語(yǔ)意思是靜態(tài)的,在C語(yǔ)言中static可以用來(lái)修飾 局部變量、全局變量和函數(shù)。 在這里給大家補(bǔ)充一個(gè)知識(shí),我們的數(shù)據(jù)在內(nèi)存中存儲(chǔ)時(shí),大概分為3個(gè)區(qū)域。 1. 棧區(qū) :我們創(chuàng)建的局部變量、形參等一般就存放在這個(gè)區(qū)域,離開作用域是會(huì)自動(dòng)銷毀,將空間還給

    2024年02月10日
    瀏覽(25)
  • C++—static關(guān)鍵字詳解

    C++的static有兩種用法:面向過(guò)程程序設(shè)計(jì)中的static和面向?qū)ο蟪绦蛟O(shè)計(jì)中的static。前者應(yīng)用于普通變量和函數(shù),不涉及類;后者主要說(shuō)明static在類中的作用。 靜態(tài)全局變量有以下特點(diǎn): 1、該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存; 2、未經(jīng)初始化的靜態(tài)全局變量會(huì)被程序自動(dòng)初始化為

    2024年02月15日
    瀏覽(23)
  • 詳解Java的static關(guān)鍵字

    詳解Java的static關(guān)鍵字

    不依賴于對(duì)象實(shí)例:靜態(tài)方法不需要依賴于任何對(duì)象實(shí)例,因?yàn)樗鼈兣c具體的對(duì)象實(shí)例無(wú)關(guān)聯(lián)。這意味著在沒(méi)有創(chuàng)建對(duì)象實(shí)例的情況下,就可以直接通過(guò)類名訪問(wèn)或調(diào)用靜態(tài)方法。 可以訪問(wèn)靜態(tài)成員:靜態(tài)方法可以訪問(wèn)類的靜態(tài)成員(靜態(tài)字段和靜態(tài)方法),但不能訪問(wèn)非靜

    2024年02月05日
    瀏覽(49)
  • 在 C/C++中 static 關(guān)鍵字詳解

    在 C/C++中 static 關(guān)鍵字詳解

    static 是 C/C++中的 之一, 是常見(jiàn)的函數(shù)與變量(C++中還包括類)的修飾符 ,它常被用來(lái)控制變量的存儲(chǔ)方式和作用范圍。 在眾多高級(jí)語(yǔ)言中都有其作為或函數(shù)出現(xiàn),所以這也是應(yīng)當(dāng)被程序員熟知其各種含義的一個(gè)單詞 我們知道在函數(shù)內(nèi)部定義的變量,當(dāng)程序執(zhí)

    2024年02月14日
    瀏覽(25)
  • 嵌入式C語(yǔ)言關(guān)鍵字(const、static、volitatile)

    C語(yǔ)言中const修飾通常是用來(lái)聲明常量,并聲明常量的值不能修改。當(dāng)涉及 指針變量 時(shí)情況就會(huì)變得更加有趣,需要特別注意。因?yàn)橛袃蓸訓(xùn)|西都有可能成為常量— 一種是用來(lái)限定指向的空間的值不可修改;另一種是限定指針不可修改 。下面是幾個(gè)聲明的例子: 總結(jié):cons

    2024年02月06日
    瀏覽(26)
  • 【文末福利】C語(yǔ)言掃盲——關(guān)鍵字static究竟限制了誰(shuí)?

    【知識(shí)科普】C語(yǔ)言的static究竟限制了誰(shuí)? 這是一個(gè)有趣的話題,雖然說(shuō)教科書給了你一些說(shuō)法,但你真正能把static說(shuō)清楚嗎?本文將通過(guò)一個(gè)案例,給大家做一個(gè)深度的拆解分析。 注:在本文的討論中,無(wú)明確說(shuō)明時(shí),指的都是static修飾函數(shù),而非變量。 最近的幾個(gè)月一直

    2024年02月14日
    瀏覽(21)
  • C/C++ static關(guān)鍵字詳解(最全解析,static是什么,static如何使用,static的??济嬖囶})

    C/C++ static關(guān)鍵字詳解(最全解析,static是什么,static如何使用,static的常考面試題)

    目錄 一、前言 ?二、static是什么? 三、static修飾的對(duì)象是什么?? ?四、C 語(yǔ)言中的 static ???static的C用法 ???static的重點(diǎn)概念 ???static修飾局部變量 ???static在修飾局部變量和函數(shù)的作用 ???static修飾全局變量和函數(shù) ??static在修飾全局變量和函數(shù)的作用

    2024年02月05日
    瀏覽(20)
  • 【讓你從0到1學(xué)會(huì)C語(yǔ)言】指針/數(shù)組傳參以及static關(guān)鍵字

    【讓你從0到1學(xué)會(huì)C語(yǔ)言】指針/數(shù)組傳參以及static關(guān)鍵字

    作者:喜歡貓咪的的程序員 專欄:《C語(yǔ)言》 喜歡的話:世間因?yàn)樯倌甑耐ι矶?,而更加瑰麗? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——《人民日?qǐng)?bào)》 如果對(duì)?指針了解不多的話,請(qǐng)先看我的另外一篇博客: http://t.csdn.cn/0rd9D http://t.csdn.cn/0rd9D 二維數(shù)組傳參: arr為二維數(shù)

    2024年02月16日
    瀏覽(44)
  • C語(yǔ)言中volatile/register/const/static/extern/auto關(guān)鍵字的作用

    目錄 一、volatile 二、register詳解 三、const詳解 四、static詳解 五、extern詳解 語(yǔ)法 作用 六、auto詳解 突然想總結(jié)一下這些的作用,靈活使用這些對(duì)程序的可靠性和速率都有提高 volatile是防止編譯器優(yōu)化,如果是高頻繁的變量編譯器會(huì)自動(dòng)將變量放到寄存器中,但是有的變

    2024年02月07日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包