C/C++舉例講解關鍵字的用法
static
static修飾全局變量
static修飾的全局變量只能在當前聲明文件內(nèi)使用,不能夠在其他文件中使用。
舉例:
static int a=0; //static修飾后變量a僅在本文件中可見,其他文件里不可見變量a(隱藏了),別的文件不可以調(diào)用
int b=0; //其他文件可以通過extern int b來使用本文件中的全局變量b
目標:此文件調(diào)用上一個文件中的全局部變量b
#include<stdio.h>
extern int b; //先用extern把b調(diào)過來
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ù),來修改counter的值并獲取,前提counter必須被static修飾,若不修飾,counter會隨著fun函數(shù)退出而銷毀,其他外部函數(shù)不能獲取counter的值
}
return 0;
}
int fun() //聲明一個函數(shù)fun,實現(xiàn)計數(shù)功能
{
static int counter; //函數(shù)內(nèi)部聲明static局部變量counter,可以保證counter只能在fun函數(shù)內(nèi)部被修改,其他地方不能修改counter的值;生命周期為整個源程序,作用域不改變只能在此函數(shù)內(nèi)使用
counter++; //調(diào)用此fun函數(shù)時,counter就加1
return counter; //返回counter的值
}static修飾函數(shù)
static對函數(shù)修飾與對全局變量的修飾相似,只能被本文件中的函數(shù)調(diào)用,不能被同一程序其他文件中的函數(shù)調(diào)用。
舉例:
static int getdata1() //static修飾getdata1,此函數(shù)不能被其他文件調(diào)用
{
return 1;
}
int getdata2() //未加static修飾,其他文件可以調(diào)用getdata2()
{
return 2;
}另一個文件:想調(diào)用getdata2()
extern int getdata2(); //把上一個文件中getdata2()函數(shù)調(diào)過來
int main()
{
int ret=getdata2(); //定義ret并初始化把getdata2的返回值賦給ret
return 0;
}注:
(1)一個源程序通常由若干個c文件組成,c文件之間相互調(diào)用函數(shù)與變量時,需要通過extern進行外部聲明。
(2)extern的作用是用于聲明外部變量、外部函數(shù);static用來防止c文件內(nèi)的函數(shù)、變量被外部調(diào)用,隱藏作用。
(3)聲明對象:基本變量、函數(shù)、結構體、枚舉等。
(4)static局部變量存在內(nèi)存的靜態(tài)區(qū),即使當前函數(shù)運行結束,靜態(tài)變量的值不會被銷毀,還繼續(xù)存在,函數(shù)下次運行時仍可以用到這個值。
const
1. const聲明的變量的值不能再被修改,與#define相比,const限定符優(yōu)點:
(1)宏定義僅是對字符常量簡單替換,不能檢查類型;
(2)const可以保護被修飾的變量,防止意外修改;
(3)編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內(nèi)存的操作,使得它的效率也很高;
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類型實際上是一種整數(shù)類型,僅占用1位存儲空間, 程序通過布爾值可選擇執(zhí)行哪部分代碼。
bool done = false;
while(!done)
{
......
}
break
關鍵字break是用來跳出一個do,for,while的循環(huán),它也可以結束一個switch語句的 子句,讓程序忽略下面的case代碼;case關鍵字與switch搭配用來檢測匹配。
continue
在一個循環(huán)語句中, continue語句用來結束這次循環(huán),后面的循環(huán)繼續(xù),下面代碼顯示 除了10之外0-20的所有數(shù)字。
for(int i = 0;i < 21;i++)
{
if(i == 10) //判斷i為10時,走這個if語句;i不為10時,就不走if語句,直接走cout語句
{
continue; //判斷i等于10了,那就結束這次循環(huán),不計入(不cout)i為10這個數(shù)據(jù)
}
cout <<i<<""; //cout用于在計算機屏幕上顯示信息,即打印、輸出
}
到此這篇關于C/C++舉例講解關鍵字的用法的文章就介紹到這了,更多相關C語言關鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
簡要對比C語言中的truncate()函數(shù)與ftruncate()函數(shù)
這篇文章主要介紹了C語言中的truncate()函數(shù)與ftruncate()函數(shù)的簡要對比,注意其之間的區(qū)別,需要的朋友可以參考下2015-09-09
C語言雙向鏈表實現(xiàn)根據(jù)使用頻率安排元素位置的功能實例代碼
這篇文章主要介紹了C語言雙向鏈表實現(xiàn)根據(jù)使用頻率安排元素位置的功能實例代碼的相關資料,需要的朋友可以參考下2017-03-03
用C語言winform編寫滲透測試工具實現(xiàn)SQL注入功能
本篇文章主要介紹使用C#winform編寫滲透測試工具,實現(xiàn)SQL注入的功能。使用python編寫SQL注入腳本,基于get顯錯注入的方式進行數(shù)據(jù)庫的識別、獲取表名、獲取字段名,最終獲取用戶名和密碼;使用C#winform編寫windows客戶端軟件調(diào)用.py腳本,實現(xiàn)用戶名和密碼的獲取2021-08-08
使用Objective-C獲取IPHONE手機IMSI序列號
這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。2015-04-04

