C指標原理 36 C快速入門

2021-09-19 08:25:44 字數 4003 閱讀 5546

一、c簡介

1、c語言簡介

c語言是一門語法 精簡的語言,它的關鍵字僅有32個,c語言以main函式為主函式,程式編譯執行後後,執行的就是main函式的內容,因此,縱觀很多c語言程式,形成了一道有趣的風景線:標頭檔案和許多c**檔案以main函式為中心和起始點構造,在main函式中呼叫了這些檔案中編寫的**,引用標頭檔案。c語言程式實質就是在程式中呼叫 c標準庫提供的函式、其它c庫提供的函式、作業系統提供的api介面、自己定義的函式,同時應用適當的資料結構和演算法來完成工作。

c語言雖然精簡,但卻很強大,它不但能完成比它更複雜的程式語言所做的事情,而且還能做其他語言不擅長的工作,比如作業系統,linux、unix的核心、gnome桌面等等都是c語言的傑作,尤其在系統核心的設計與研發領域,它的「兄弟」c++也不是對手(至今為止,沒有出現一款用c++製作的桌面系統或嵌入式系統的核心)。

2、c語言的關鍵字

auto :宣告自動變數   

short :宣告短整型變數或函式   

int: 宣告整型變數或函式

long :宣告長整型變數或函式   

float:宣告浮點型變數或函式   

double :宣告雙精度變數或函式   

char :宣告字元型變數或函式   

struct:宣告結構體變數或函式   

union:宣告共用資料型別   

enum :宣告列舉型別   

typedef:用以給資料型別取別名   

const :宣告唯讀變數   

unsigned:宣告無符號型別變數或函式   

signed:宣告有符號型別變數或函式   

extern:宣告變數是在其他檔案正宣告   

register:宣告暫存器變數   

static :宣告靜態變數   

volatile:說明變數在程式執行中可被隱含地改變   

void :宣告函式無返回值或無引數,宣告無型別指標   

if:條件語句   

else :條件語句否定分支(與 if 連用)   

switch :用於開關語句   case:開關語句分支   

for:一種迴圈語句   

do :迴圈語句的迴圈體   

while :迴圈語句的迴圈條件   

goto:無條件跳轉語句   

continue:結束當前迴圈,開始下一輪迴圈   

break:跳出當前迴圈   

default:開關語句中的「其他」分支   

sizeof:計算資料型別長度   

return :子程式返回語句(可以帶引數,也可不帶引數)迴圈條件

猜數字:

我們來一步步打造乙個猜數字的遊戲

遊戲的大意是:輸入乙個1-500以內的正整數,程式根據玩家輸入的數字,提示數字比正確答案之前大,或者數字比正確答案之間小,比如要猜的數字是85,玩家第一次輸入90,提示比要猜的數字大,第二次輸入80,提示比要猜的數字小,第二次輸入85,提示猜中了。

下面來一步步打造這個遊戲,幫助大家快速複習c語言基礎知識。

(1)編寫輸入數字的**,並編譯執行。

dp@dp:~/cquick % cat guessnum.c

#include int main()

接著在終端編譯執行:

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:55

你輸入的數字是:55

dp@dp:~/cquick %

縱觀上面程式及其執行結果,可發現,c語言中可使用printf函式完成螢幕輸出,可使用scanf函式接受指定格式的資料錄入,此外,」\n」表示換行符,」%d」表示整數格式。

(2)限制輸入數字的範圍

遊戲的要求是1-500以內的整數

但是如果我們在上述程式中輸入900、-10等不符合要求的數字,仍然能通過,

你好,請輸入乙個數字:900

你輸入的數字是:900

你好,請輸入乙個數字:-10

你輸入的數字是:-10

系統沒有提示錯誤。因此,需要修改程式限制玩家輸入數字的範圍

#include int main()

else

}

執行程式:

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:200

你輸入的數字是:200

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:900

數字僅限於1-500之間,請重新執行本程式!

dp@dp:~/cquick %

上面程式使用了c語言的if…else…語句塊,這是乙個很多語言都有的機制(包括一些函式語言,比如haskell的if…then…else…),該語句塊分2個部分,第1個部分if語句段,表示如果if後面跟的條件滿足的話,執行if語句段,第2個部分是else語句段,如果if後的條件不滿足執行,什麼是條件滿足與不滿足,c語言可理解為如果條件的返回值非0表示條件滿足,如果是0則表示條件不滿足。

可以將多個條件組合成乙個綜合條件做為該語句塊的條件,方式是使用||(表示或者)或&&(表示並且),比如上面程式中的條件:mynum>500 ||mynum<1

但是c語言中有乙個關鍵字null,在c語言中,條件語句**現的null和0的值是一樣的,但null常用於指標和物件,0常用於int等整型數。這意味著,如果出現了下面類似的語句塊,就意味著是對含有指標變數(指標變數通常用於指向其它變數的記憶體位址,比如下面**中的mypoint1和mypoint2)的條件進行判斷了:

if (mypoint1!=null)while (條件)

通過迴圈,在玩家輸入錯誤數字的情況下,給玩家重新輸入的機會,而不是直接退出程式。

dp@dp:~/cquick % cat guessnum.c

#include int main()

else

}}

編譯並執行:

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:1234

數字僅限於1-500之間,請重新執行本程式!

你好,請輸入乙個數字:-12

數字僅限於1-500之間,請重新執行本程式!

你好,請輸入乙個數字:88

你輸入的數字是:88

上述程式中的while的條件中使用了「!」,它表示邏輯非。

上述程式中的while的條件中使用了「!」,它表示邏輯非。

也可以用do...while來實現它:

#include int main()

else

} while (!ispass);

}

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:8889

數字僅限於1-500之間,請重新執行本程式!

你好,請輸入乙個數字:12

你輸入的數字是:12

觀察上面2個程式可看出,使用了ispass這個變數做為是否退出迴圈的依據,也可以不使用ispass,直接通過break語句退出迴圈(注意,只能退出break語句本身所在的那層迴圈),

#include int main()

else

} }

dp@dp:~/cquick % gcc guessnum.c -o myguess

dp@dp:~/cquick % ./myguess

你好,請輸入乙個數字:8788

數字僅限於1-500之間,請重新執行本程式!

你好,請輸入乙個數字:66

你輸入的數字是:66

dp@dp:~/cquick %

經驗36 C 無名(大事,物 )

有時候,方便 它會使用匿名的東西。1 匿名事件 args.cookiegot s,e 不用專門再去寫方法,當然這樣的方式簡單介紹的時候使用。2 匿名物件 var ohlist ohmanager.getlist select x new 使用者介面或前後臺互動,指定某些字段,且新的物件,不用再去建實...

36 C 賦值 運算子過載

賦值符常常初學者的混淆。這是毫無疑問的,因為 在程式設計中是最基本的運算子,可以進行賦值操作,也能引起拷貝建構函式的呼叫。class person public person int id,int age 過載賦值運算子 person operator const person person pri...

C 快速入門

1.1 呼叫 gnu編譯器的預設命令是 g g prog.cc o prog unix 的 shell視窗 cc prog.cc 標準的輸入與輸出物件 處理輸入時使用的命令 cin cin為 istream型別物件 處理輸出時使用的命令 cout cout為 ostream型別物件 標準庫的另外兩個...