C/C++舉例講解關(guān)鍵字的用法
static
static修飾全局變量
static修飾的全局變量只能在當(dāng)前聲明文件內(nèi)使用,不能夠在其他文件中使用。
舉例:
static int a=0; //static修飾后變量a僅在本文件中可見(jiàn),其他文件里不可見(jiàn)變量a(隱藏了),別的文件不可以調(diào)用 int b=0; //其他文件可以通過(guò)extern int b來(lái)使用本文件中的全局變量b
目標(biāo):此文件調(diào)用上一個(gè)文件中的全局部變量b
#include<stdio.h> extern int b; //先用extern把b調(diào)過(guò)來(lái) 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函數(shù)里調(diào)用fun函數(shù),來(lái)修改counter的值并獲取,前提counter必須被static修飾,若不修飾,counter會(huì)隨著fun函數(shù)退出而銷(xiāo)毀,其他外部函數(shù)不能獲取counter的值 } return 0; } int fun() //聲明一個(gè)函數(shù)fun,實(shí)現(xiàn)計(jì)數(shù)功能 { static int counter; //函數(shù)內(nèi)部聲明static局部變量counter,可以保證counter只能在fun函數(shù)內(nèi)部被修改,其他地方不能修改counter的值;生命周期為整個(gè)源程序,作用域不改變只能在此函數(shù)內(nèi)使用 counter++; //調(diào)用此fun函數(shù)時(shí),counter就加1 return counter; //返回counter的值 }
static修飾函數(shù)
static對(duì)函數(shù)修飾與對(duì)全局變量的修飾相似,只能被本文件中的函數(shù)調(diào)用,不能被同一程序其他文件中的函數(shù)調(diào)用。
舉例:
static int getdata1() //static修飾getdata1,此函數(shù)不能被其他文件調(diào)用 { return 1; } int getdata2() //未加static修飾,其他文件可以調(diào)用getdata2() { return 2; }
另一個(gè)文件:想調(diào)用getdata2()
extern int getdata2(); //把上一個(gè)文件中g(shù)etdata2()函數(shù)調(diào)過(guò)來(lái) int main() { int ret=getdata2(); //定義ret并初始化把getdata2的返回值賦給ret return 0; }
注:
(1)一個(gè)源程序通常由若干個(gè)c文件組成,c文件之間相互調(diào)用函數(shù)與變量時(shí),需要通過(guò)extern進(jìn)行外部聲明。
(2)extern的作用是用于聲明外部變量、外部函數(shù);static用來(lái)防止c文件內(nèi)的函數(shù)、變量被外部調(diào)用,隱藏作用。
(3)聲明對(duì)象:基本變量、函數(shù)、結(jié)構(gòu)體、枚舉等。
(4)static局部變量存在內(nèi)存的靜態(tài)區(qū),即使當(dāng)前函數(shù)運(yùn)行結(jié)束,靜態(tài)變量的值不會(huì)被銷(xiāo)毀,還繼續(xù)存在,函數(shù)下次運(yùn)行時(shí)仍可以用到這個(gè)值。
const
1. const聲明的變量的值不能再被修改,與#define相比,const限定符優(yōu)點(diǎn):
(1)宏定義僅是對(duì)字符常量簡(jiǎn)單替換,不能檢查類(lèi)型;
(2)const可以保護(hù)被修飾的變量,防止意外修改;
(3)編譯器通常不為普通const常量分配存儲(chǔ)空間,而是將它們保存在符號(hào)表中,這使得它成為一個(gè)編譯期間的常量,沒(méi)有了存儲(chǔ)與讀內(nèi)存的操作,使得它的效率也很高;
2.以下三個(gè)變量聲明的含義:
(1)int const*p;
中const 修飾的是指針p, 表示指針p的值不能改變,而p(即地址)是可以改變的。
(2)int * const p;
中const修飾的 p(即地址)是常量,不可改變,但是指針p的值可以改變。
(3)int const *p const;
中是(1)和(2)兼得,表示 只讀, 其地址以及地址中對(duì)應(yīng)的值都不可改變。
而const int *p與int const *p用法一樣,修飾的都是指針p的值不能改變。
BOOL
關(guān)鍵字bool是聲明 布爾邏輯變量的,變量要么是真,要么是假,用1表示true、0表示false;_Bool類(lèi)型實(shí)際上是一種整數(shù)類(lèi)型,僅占用1位存儲(chǔ)空間, 程序通過(guò)布爾值可選擇執(zhí)行哪部分代碼。
bool done = false;
while(!done)
{
......
}
break
關(guān)鍵字break是用來(lái)跳出一個(gè)do,for,while的循環(huán),它也可以結(jié)束一個(gè)switch語(yǔ)句的 子句,讓程序忽略下面的case代碼;case關(guān)鍵字與switch搭配用來(lái)檢測(cè)匹配。
continue
在一個(gè)循環(huán)語(yǔ)句中, continue語(yǔ)句用來(lái)結(jié)束這次循環(huán),后面的循環(huán)繼續(xù),下面代碼顯示 除了10之外0-20的所有數(shù)字。
for(int i = 0;i < 21;i++) { if(i == 10) //判斷i為10時(shí),走這個(gè)if語(yǔ)句;i不為10時(shí),就不走if語(yǔ)句,直接走cout語(yǔ)句 { continue; //判斷i等于10了,那就結(jié)束這次循環(huán),不計(jì)入(不cout)i為10這個(gè)數(shù)據(jù) } cout <<i<<""; //cout用于在計(jì)算機(jī)屏幕上顯示信息,即打印、輸出 }
到此這篇關(guān)于C/C++舉例講解關(guān)鍵字的用法的文章就介紹到這了,更多相關(guān)C語(yǔ)言關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?STL標(biāo)準(zhǔn)庫(kù)std::vector擴(kuò)容時(shí)進(jìn)行深復(fù)制原因詳解
我們知道,std::vector之所以可以動(dòng)態(tài)擴(kuò)容,同時(shí)還可以保持順序存儲(chǔ),主要取決于其擴(kuò)容復(fù)制的機(jī)制。當(dāng)容量滿時(shí),會(huì)重新劃分一片更大的內(nèi)存區(qū)域,然后將所有的元素拷貝過(guò)去2022-08-08基于Sizeof與Strlen的區(qū)別以及聯(lián)系的使用詳解
本篇文章是對(duì)Sizeof與Strlen的區(qū)別以及聯(lián)系的使用進(jìn)行了詳細(xì)的介紹。需要的朋友參考下2013-05-05Matlab中圖像數(shù)字水印算法的原理與實(shí)現(xiàn)詳解
數(shù)字水印技術(shù)作為信息隱藏技術(shù)的一個(gè)重要分支,是將信息(水印)隱藏于數(shù)字圖像、視頻、音頻及文本文檔等數(shù)字媒體中,從而實(shí)現(xiàn)隱秘傳輸、存儲(chǔ)、標(biāo)注、身份識(shí)別、版權(quán)保護(hù)和防篡改等目的。本文就來(lái)講講圖像數(shù)字水印算法的原理與實(shí)現(xiàn),感興趣的可以了解一下2023-04-04VC中CDC、HDC、pDC區(qū)別與聯(lián)系及相互轉(zhuǎn)換
這篇文章主要介紹了VC中CDC、HDC、pDC區(qū)別與聯(lián)系及相互轉(zhuǎn)換的方法,非常的詳細(xì),有需要的小伙伴可以參考下,希望對(duì)大家學(xué)習(xí)VC能夠有所幫助。2015-11-11淺析結(jié)束程序函數(shù)exit, _exit,atexit的區(qū)別
在一個(gè)程序中最多可以用atexit()注冊(cè)32個(gè)處理函數(shù),這些處理函數(shù)的調(diào)用順序與其注冊(cè)的順序相反,也即最先注冊(cè)的最后調(diào)用,最后注冊(cè)的最先調(diào)用2013-09-09