網站首頁 編程語言 正文
static
static修飾全局變量
static修飾的全局變量只能在當前聲明文件內使用,不能夠在其他文件中使用。
舉例:
static int a=0; //static修飾后變量a僅在本文件中可見,其他文件里不可見變量a(隱藏了),別的文件不可以調用 int b=0; //其他文件可以通過extern int b來使用本文件中的全局變量b
目標:此文件調用上一個文件中的全局部變量b
#include<stdio.h> extern int b; //先用extern把b調過來 int main() { int i=b; //把b賦值給i return 0; }
static修飾局部變量
include<stdio.h> int main() { int i=0; for(i=0,i<10;i++) { ptintf("counter=%d\n",fun()); //在main函數里調用fun函數,來修改counter的值并獲取,前提counter必須被static修飾,若不修飾,counter會隨著fun函數退出而銷毀,其他外部函數不能獲取counter的值 } return 0; } int fun() //聲明一個函數fun,實現計數功能 { static int counter; //函數內部聲明static局部變量counter,可以保證counter只能在fun函數內部被修改,其他地方不能修改counter的值;生命周期為整個源程序,作用域不改變只能在此函數內使用 counter++; //調用此fun函數時,counter就加1 return counter; //返回counter的值 }
static修飾函數
static對函數修飾與對全局變量的修飾相似,只能被本文件中的函數調用,不能被同一程序其他文件中的函數調用。
舉例:
static int getdata1() //static修飾getdata1,此函數不能被其他文件調用 { return 1; } int getdata2() //未加static修飾,其他文件可以調用getdata2() { return 2; }
另一個文件:想調用getdata2()
extern int getdata2(); //把上一個文件中getdata2()函數調過來 int main() { int ret=getdata2(); //定義ret并初始化把getdata2的返回值賦給ret return 0; }
注:
(1)一個源程序通常由若干個c文件組成,c文件之間相互調用函數與變量時,需要通過extern進行外部聲明。
(2)extern的作用是用于聲明外部變量、外部函數;static用來防止c文件內的函數、變量被外部調用,隱藏作用。
(3)聲明對象:基本變量、函數、結構體、枚舉等。
(4)static局部變量存在內存的靜態區,即使當前函數運行結束,靜態變量的值不會被銷毀,還繼續存在,函數下次運行時仍可以用到這個值。
const
1. const聲明的變量的值不能再被修改,與#define相比,const限定符優點:
(1)宏定義僅是對字符常量簡單替換,不能檢查類型;
(2)const可以保護被修飾的變量,防止意外修改;
(3)編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高;
2.以下三個變量聲明的含義:
(1)int const*p;
中const 修飾的是指針p, 表示指針p的值不能改變,而p(即地址)是可以改變的。
(2)int * const p;
中const修飾的 p(即地址)是常量,不可改變,但是指針p的值可以改變。
(3)int const *p const;
中是(1)和(2)兼得,表示 只讀, 其地址以及地址中對應的值都不可改變。
而const int *p與int const *p用法一樣,修飾的都是指針p的值不能改變。
BOOL
關鍵字bool是聲明 布爾邏輯變量的,變量要么是真,要么是假,用1表示true、0表示false;_Bool類型實際上是一種整數類型,僅占用1位存儲空間, 程序通過布爾值可選擇執行哪部分代碼。
?? ?bool done = false;
?? ?while(!done)
?? ?{
?? ?......
?? ?}
break
關鍵字break是用來跳出一個do,for,while的循環,它也可以結束一個switch語句的 子句,讓程序忽略下面的case代碼;case關鍵字與switch搭配用來檢測匹配。
continue
在一個循環語句中, continue語句用來結束這次循環,后面的循環繼續,下面代碼顯示 除了10之外0-20的所有數字。
for(int i = 0;i < 21;i++) { if(i == 10) //判斷i為10時,走這個if語句;i不為10時,就不走if語句,直接走cout語句 { continue; //判斷i等于10了,那就結束這次循環,不計入(不cout)i為10這個數據 } cout <<i<<""; //cout用于在計算機屏幕上顯示信息,即打印、輸出 }
原文鏈接:https://blog.csdn.net/m0_46660825/article/details/124849299
相關推薦
- 2024-02-26 IDEA隱藏指定文件/文件夾
- 2022-07-03 nginx?緩存使用及配置步驟_nginx
- 2022-07-21 微信小程序--動態設置導航欄顏色
- 2022-11-17 python中?OpenCV和Pillow處理圖像操作及時間對比_python
- 2022-12-19 Pytorch相關知識介紹與應用_python
- 2022-03-17 Redis快速部署為Docker容器的實現方法_docker
- 2022-08-17 解決Git推送錯誤non-fast-forward的方法_相關技巧
- 2022-03-15 3 Segmentation fault (core dumped) ./a.out Exited
- 最近更新
-
- 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同步修改后的遠程分支