淺析C++中static的一些用法
概述
Static,顧名思義是靜態(tài)、靜止的意思。在C語言中static是一個用來修飾變量與函數(shù)的關(guān)鍵字,被修飾對象的某些性質(zhì)將發(fā)生根本性的改變,而這些變化從某種意義上又似乎契合了“靜態(tài)”這一含義。那接下來就詳細(xì)講一講static這個關(guān)鍵字的用法吧。
我們先來思考這樣一段代碼
#include <stdio.h> int num(int m) { int k = 0; static int n= 3; k += 1; n += 2; return ( m + n + k); } int main() { int i; int m = 2; for (i = 0; i < 5; i++) { printf("%d,", num(m)); } }
A. 6 ,8,10,12,14
B.8,10,12,14,16
C.10,12,14,16,18
D.12,14,16,18,20
相信你們看了這代碼心中已經(jīng)有了自己的答案,我先說一下這道題的答案是 B ,但是如果對static這個關(guān)鍵字不熟悉的朋友會在想,艾這個static是啥來著,它在這里有什么作用?所以在這里就不得不提static的特性了。由此引出static的特性。
在C語言中: static可用來修飾變量和函數(shù): 1. 修飾局部變量-稱為靜態(tài)局部變量(看過上面代碼就知道了k,n都是局部變量了吧,其中n就是那個靜態(tài)局部變量) 2. 修飾全局變量-稱為靜態(tài)全局變量 3. 修飾函數(shù)-稱為靜態(tài)函數(shù)
static的特性:
1. static修飾變量
a. 函數(shù)中局部變量(一般將定義在函數(shù)中的變量稱為局部變量,其只能在函數(shù)內(nèi)部使用):
聲明周期延長:該變量不隨函數(shù)結(jié)束而結(jié)束(說到周期這里就提一句變量的周期:一個變量從創(chuàng)建到銷毀的那個時間段稱為它的周期)
在這里引入生命周期這一名詞,它分為局部變量的生命周期和全局變量的生命周期
局部變量的生命周期:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束(可以理解為:在一個函數(shù)中定義的變量,從它被創(chuàng)建開始到它出了(銷毀)這個函數(shù)的時間段就是它存活的生命周期)。 全局變量的生命周期:整個程序的生命周期,它隨程序啟動而 產(chǎn)生生,隨程序結(jié)束而消亡,在任何函數(shù)中都可以使用。
初始化:只在第一次調(diào)用該函數(shù)時進(jìn)行初始化
記憶性:后序調(diào)用時,該變量使用前一次函數(shù)調(diào)用完成之后保存的值
存儲位置:不會存儲在棧上,放在數(shù)據(jù)段
b. 全局變量(定義在全局作用域中的變量,即函數(shù)外的變量,稱之為全局變量)
改變該變量的鏈接屬性,讓該變量具有文件作用域,即只能在當(dāng)前文件中使用
c. 修飾變量時,沒有被初始化時會被自動初始化為0
2. static修飾函數(shù): 改變該函數(shù)的鏈接屬性,讓該函數(shù)具有文件作用域,即只能在當(dāng)前文件中使用
以上就是對static的一些用法與總結(jié)啦,若有裨益,吾之幸也!若是了解了在評論區(qū)扣個1吧,謝謝支持。
美好的一天總是那么快就過去,我們不必感嘆時間流逝,不必懷戀過去,也不必憂慮將來,我們唯一能掌控的也許只有我們現(xiàn)在能做什么。
到此這篇關(guān)于淺析C++中static的一些用法的文章就介紹到這了,更多相關(guān)static的用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ OpenCV實戰(zhàn)之手寫數(shù)字識別
這篇文章主要為大家詳細(xì)介紹了如何使用machine learning機(jī)器學(xué)習(xí)模塊進(jìn)行手寫數(shù)字識別功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08