C語言運算符

1.三目運算符:

(表達式1)赏胚?(表達式2) : (表達式3);

表達式1 成立 ,返回表達式2 的值矾缓,否 ?返回3 的值

內(nèi)存地址:(取地址符 &) ?打印 %P占位符 printf(“b%p”,&b)

switch (表達式)

case(常量)://case 里面不能直接定義變量

語句塊怀酷;

break;

default: 語句 n + 1;

# include

int main( )

{

void action1(int,int),action2(int,int);

char ch;

int a = 5,b = 23;

ch = getchar( );

switch (ch)

{

case‘a(chǎn)':

case‘A’: action1(a,b);break;

default: putchar(‘\a’) // 如果輸入其他字符而账,發(fā)出警告胰坟。

}

}

//內(nèi)存地址,變量的首個字節(jié)的編號就是該變量的內(nèi)存地址泞辐。

// scanf 函數(shù) printf 函數(shù) ?變量聲明 r如果下一次輸入時字符貨其他情況時笔横,?“\n”scanf(“\n")

int oldPassWord ?= 123456;

printf(“輸入新密碼:\n”);

//定義一個新變量,存儲新的密碼

intnewPassWord;

scanf(“%d”,&newPassWord);

if (oldPassWord ==newPassWord)

{

執(zhí)行語句塊咐吼;

}

2.靜態(tài)變量和動態(tài)變量

如果函數(shù)中的變量只被引用而不改變值吹缔,則定義為靜態(tài)局部變量(同時初始化),以免每次調(diào)用時重新賦值锯茄。

階乘運算 中 使用 靜態(tài)變量

# include

int main( )

{

int fac(int n);

for(int i = 1;i < 6;i++) printf(“%d! = %d\n”,i.fac(i));

return 0;

}

int fac(int n)

{

static int f = 1;// f 保留來上次調(diào)用結(jié)束時的值

f = f * i; ? ? ? ? ?// 在上次的f的值的基礎(chǔ)上再乘以n

return(f);// ? 返回值f是n! 的值

}

靜態(tài)變量存儲占用內(nèi)存(長期占用不釋放)厢塘,若非必要,不怎么使用肌幽。

3晚碾、寄存器變量(register)

一般情況下,變量(靜態(tài)和動態(tài))的值存放于內(nèi)存中的喂急。當程序中用到哪一個變量的值時格嘁,由控制器發(fā)出指令將內(nèi)存中該變量的值送到運算器中。經(jīng)過運算器進行運算廊移,如需要存數(shù)糕簿,再從運算器將數(shù)據(jù)送到內(nèi)存存放。

如果變量使用頻繁狡孔,存儲變量的值花費時間較多懂诗。提高執(zhí)行效率,允許將局部變量的值放在cpu中的寄存器中苗膝,需要時直接從寄存器取出參加運算殃恒,不必再到內(nèi)存中去存儲。(寄存器的存儲速度遠高于內(nèi)存)荚醒。這種變量叫:寄存器變量芋类,用關(guān)鍵字register 作聲明:

register ?int f ;// 定義f為寄存器變量 。

注:三種局部變量的存儲位置是不同的:自動變量存儲于 動態(tài)存儲區(qū) 界阁;靜態(tài)局部變量 存于 靜態(tài)存儲區(qū);寄存器存儲于cpu的寄存器中.

4胖喳、全局變量的存儲類別

一般而言泡躯,外部變量是在函數(shù)外部定義的的全局變量,其作用域從 定義處開始 到 本程序文件的末尾。在此作用域內(nèi)较剃,全局變量可以為各個函數(shù)所引用咕别。but 希望能擴展外部變量的作用域時可以。

> 在一個文件內(nèi)擴展外部變量的作用域写穴。

如果外部變量的不在文件的開頭定義惰拱,其有效的作用范圍只限于定義處到文件結(jié)束。在定義點之前的函數(shù)不能引用該處變量啊送。若需要偿短,則應(yīng)該在引用之前用關(guān)鍵字 extern 對該處變量作

“外部變量聲明”,表示把該處的作用域擴展到此位置馋没。

eg:

# include

int main ( )

{

int max( );

extern int A,B,C; ?// 將外部變量擴展到從此處開始

printf(“three number?enter:”);

scanf(“%d %d %d”,&A,&B,&C);

printf(“Max is %d\n”,max);

return 0;

}

int A,B,C; ? // 定義外部變量昔逗;

int max( )

{

int m;

m = A > B ? A : B;

return (m);

}

> 將外部變量的作用域擴展到其他文件

一個c程序可由一個或多個源程序文件組成。此時篷朵,如果一個程序由多個文件組成勾怒。如,一個程序由兩個文件組成声旺,在兩個文件中都需要用到另一個外部變量Num笔链,不能分別在兩個文件中各自定義一個外部變量 Num ,否則在進行程序的連接時會出現(xiàn)“重復(fù)定義”的錯誤腮猖〖ǎ the right way is :在其中一個文件中定義外部變量,在另一文件中用extern 對 Num 作“外部變量聲明缚够,即extern Num”.

文件file1.c

# include

int A;

int main ( )

{

int power(int);

int b = 3,c,d,m;

printf(“enter the number a and its power m:\n”);

scanf(“%d,%d”,&A,&m);

c = A * b;

d = power(m);

printf(“%d * %d = %d”,A,m,d);

return 0;

}

文件file2.c

extern A;

int power(int n)

{

int i,y = 1;

for (i = 1;i < = n;i++)

{

y *= A;

}

}

>將外部變量的作用域限制在本文件中

當不希望某些變量被其他文件引用幔妨,只限于在本文件引用。此時可以在定義外部變量時加一個  static 聲明谍椅。

file1.c ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?file2.c

static int A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?此時本文件不可使用

這種加上 static 聲明误堡,只能用于本文件的外部變量 稱為 靜態(tài)外部變量。

用static 聲明一個變量的作用是:

(1)對局部變量用static 聲明雏吭,把它分配在靜態(tài)存儲區(qū)锁施,該變量在整個程序執(zhí)行期間不釋放,其所分配的空間始終存在杖们。

(2)對全局變量用static 聲明悉抵,則該變量的作用域只限于本文件模塊(即聲明的文件中)

注: 不能先定義 后指定存儲類型。

********** 存儲類別小結(jié)******************

對一個數(shù)據(jù)的定義摘完,需要指定兩種屬性:數(shù)據(jù)類型 ? 存儲類型姥饰,分別使用兩個關(guān)鍵字 ? static ?auto

static int a//靜態(tài)局部變量或者靜態(tài)外部整形變量

auto char c//自動變量 ,在函數(shù)內(nèi)定義

register ?int d// 寄存器變量 孝治,在函數(shù)內(nèi)定義

static 對局部變量和全局變量的作用不同列粪。對局部變量來說审磁,它使變量由 ? 動態(tài)存儲方式 ?變?yōu)??靜態(tài)存儲方式。對全局變量來說岂座,它使變量局部化(局部于本文件)态蒂,但仍為靜態(tài)存儲方式。

從作用域角度:凡由static 聲明的费什,其作用域都是有限的钾恢,或是局限于本函數(shù)內(nèi)。

此外 鸳址,可以用extern 聲明已經(jīng)定義的外部變量瘩蚪,例如:

extern b; //將已經(jīng)定義的外部變量 b 的作用域擴展至此。

內(nèi)存中:靜態(tài)存儲區(qū)和動態(tài)存儲區(qū) ?以及 CPU中的寄存器

一個函數(shù)一般由兩個部分構(gòu)成: 聲明部分 和 執(zhí)行部分氯质。

聲明部分:對有關(guān)的標識符(變量募舟、函數(shù)、結(jié)構(gòu)體闻察、共用體~)的屬性進行聲明拱礁。

eg:有一個字符串 ?內(nèi)有若干個字符 ,先輸入一個字符辕漂,要求程序?qū)⒆址性撟址麆h去呢灶。用外部函數(shù)實現(xiàn)。

:用一個字符數(shù)組 str 存放一個字符串钉嘹,然后對str 數(shù)組中的字符逐個檢查鸯乃,如果不是指定要刪除的字符則 保留,仍存放在數(shù)組中 ?跋涣,否 缨睡,則 刪去。定義三個函數(shù)用來輸入字符串陈辱,刪除字符串奖年,輸出字符串。按以上要求沛贪,將三個函數(shù)分別放在三個文件中陋守,main函數(shù)在另一個函數(shù)中。

file1.c

# include

int main( )

{

extern void enter_string(char str[ ]);

extern void delete_string(char str[ ],char ch);

extern void print_string(char str[ ]);

//以上三個函數(shù)的聲明在本函數(shù)將要調(diào)用的已在其他文件中定義的3個函數(shù)利赋;

char c ,str [80];

enter_string(str);

scanf(“%c”,&ch);

delete_string(str,ch);

print_string(str);

return 0;

}

file2.c

void enter_string(char str[80])

{

gets(str); ? //向字符數(shù)組輸入字符串

}

file3.c

void delete_string(char str[ ],char ch)

{

int i,j;

for(i = j = 0;str[i] !=‘\0’;i++)

{

if(str[i] != ch) str[j++] = str[i]; str[j] =‘\0’;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末水评,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子媚送,更是在濱河造成了極大的恐慌中燥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塘偎,死亡現(xiàn)場離奇詭異褪那,居然都是意外死亡幽纷,警方通過查閱死者的電腦和手機式塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門博敬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人峰尝,你說我怎么就攤上這事偏窝。” “怎么了武学?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵祭往,是天一觀的道長。 經(jīng)常有香客問我火窒,道長硼补,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任熏矿,我火速辦了婚禮已骇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘票编。我一直安慰自己褪储,他們只是感情好,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布慧域。 她就那樣靜靜地躺著鲤竹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昔榴。 梳的紋絲不亂的頭發(fā)上辛藻,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機與錄音互订,去河邊找鬼吱肌。 笑死,一個胖子當著我的面吹牛屁奏,可吹牛的內(nèi)容都是我干的岩榆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼坟瓢,長吁一口氣:“原來是場噩夢啊……” “哼勇边!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起折联,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤粒褒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诚镰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奕坟,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡祥款,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了月杉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刃跛。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖苛萎,靈堂內(nèi)的尸體忽然破棺而出桨昙,到底是詐尸還是另有隱情,我是刑警寧澤腌歉,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布蛙酪,位于F島的核電站,受9級特大地震影響翘盖,放射性物質(zhì)發(fā)生泄漏桂塞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一馍驯、第九天 我趴在偏房一處隱蔽的房頂上張望阁危。 院中可真熱鬧,春花似錦泥彤、人聲如沸欲芹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菱父。三九已至,卻和暖如春剑逃,著一層夾襖步出監(jiān)牢的瞬間浙宜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工蛹磺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粟瞬,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓萤捆,卻偏偏與公主長得像裙品,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俗或,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容