網站首頁 編程語言 正文
概述
Static,顧名思義是靜態、靜止的意思。在C語言中static是一個用來修飾變量與函數的關鍵字,被修飾對象的某些性質將發生根本性的改變,而這些變化從某種意義上又似乎契合了“靜態”這一含義。那接下來就詳細講一講static這個關鍵字的用法吧。
我們先來思考這樣一段代碼
#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
相信你們看了這代碼心中已經有了自己的答案,我先說一下這道題的答案是 B ,但是如果對static這個關鍵字不熟悉的朋友會在想,艾這個static是啥來著,它在這里有什么作用?所以在這里就不得不提static的特性了。由此引出static的特性。
在C語言中: static可用來修飾變量和函數: 1. 修飾局部變量-稱為靜態局部變量(看過上面代碼就知道了k,n都是局部變量了吧,其中n就是那個靜態局部變量) 2. 修飾全局變量-稱為靜態全局變量 3. 修飾函數-稱為靜態函數
static的特性:
??1.?static修飾變量
???a.?函數中局部變量(一般將定義在函數中的變量稱為局部變量,其只能在函數內部使用):
??????聲明周期延長:該變量不隨函數結束而結束(說到周期這里就提一句變量的周期:一個變量從創建到銷毀的那個時間段稱為它的周期)
在這里引入生命周期這一名詞,它分為局部變量的生命周期和全局變量的生命周期
局部變量的生命周期:進入作用域生命周期開始,出作用域生命周期結束(可以理解為:在一個函數中定義的變量,從它被創建開始到它出了(銷毀)這個函數的時間段就是它存活的生命周期)。 全局變量的生命周期:整個程序的生命周期,它隨程序啟動而 產生生,隨程序結束而消亡,在任何函數中都可以使用。
??????初始化:只在第一次調用該函數時進行初始化
??????記憶性:后序調用時,該變量使用前一次函數調用完成之后保存的值
??????存儲位置:不會存儲在棧上,放在數據段
???b.?全局變量(定義在全局作用域中的變量,即函數外的變量,稱之為全局變量)
?????改變該變量的鏈接屬性,讓該變量具有文件作用域,即只能在當前文件中使用
???c.?修飾變量時,沒有被初始化時會被自動初始化為0
??2.?static修飾函數:?改變該函數的鏈接屬性,讓該函數具有文件作用域,即只能在當前文件中使用
以上就是對static的一些用法與總結啦,若有裨益,吾之幸也!若是了解了在評論區扣個1吧,謝謝支持。
美好的一天總是那么快就過去,我們不必感嘆時間流逝,不必懷戀過去,也不必憂慮將來,我們唯一能掌控的也許只有我們現在能做什么。
原文鏈接:https://blog.csdn.net/m0_67768006/article/details/127607402
相關推薦
- 2022-08-26 C++中Boost的智能指針scoped_ptr_C 語言
- 2022-04-08 WPF控件模板與其觸發器_基礎應用
- 2022-04-14 c語言的程序環境與預處理詳解_C 語言
- 2022-11-23 python?Multiprocessing.Pool進程池模塊詳解_python
- 2023-03-28 Python利用flask操作Redis的方法詳解_python
- 2022-08-13 Kafka復習計劃 - Kafka基礎知識以及集群參方案和參數
- 2022-12-08 python?datetime?和時間戳互相轉換問題_python
- 2023-07-07 什么是 AOP?對于 Spring IoC 和 AOP 的理解?
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支