1. 程式人生 > >C語言(二 運算子、條件語句、指標)

C語言(二 運算子、條件語句、指標)

C運算子
包括算數運算子,邏輯運算子,關係運算符,位運算子,賦值運算子,其他運算子。
算術運算子
就是加減乘除求餘,自增自減等算術。
邏輯運算子
與:&&,或:||,非:!
關係運算符
等於,大於,小於等組合
位運算子
位與:&,位或:|,位左移<<,位右移>>,異或:^,取反:~。
賦值運算子
+=,-=,=等算術運算子的組合
其他運算子
&:變數地址符,?: :條件運算子,
:指標,sizeof():變數佔記憶體大小

條件語句
if,if…else,switch,?: (三元運算子)
迴圈語句
for,while,do…while
函式


首先要有函式宣告,要告訴編譯器函式返回值型別,引數型別。
呼叫函式時,有兩種傳參方式,傳值呼叫和引用呼叫,前者是直接把值賦給形式引數,在函式內改變形參的值不改變實際變數的值,後者形參是指向實參地址的指標,改變形參就會改變相應的實參。
C作用域
在函式或塊內宣告的變數是區域性變數,函式外訪問不到。
在函式外宣告的變數為全域性變數,任何地方都能訪問到。
形式引數在函式內充當區域性變數,在函式內區域性變數會覆蓋同名的全域性變數。
陣列
記憶體中地址連續的型別相同的資料的集合
例int stars[ ] ={2,5,7,6,3,4}
starts是指向陣列第一個元素地址的指標,*stars為2 *(stars+1)為5,
Enum列舉

enum Day{
	Mon,Tue,Wes,Thu,Fri,Sat,Sun
	}day;
	day = Mon;  //day值為0,
	

列舉變數值依次加一,若沒有定義初始變數的值,那麼它就是0。

指標
指標其實也是一個變數,儲存的是變數在記憶體中的地址,例如int *p 表示定義p為指向int型別的指標,在沒有地址可以賦給它時,最好把它設為NULL。

int var  =20;
int *p =&var;
printf("Address of var variable: %p\n", &var  );
 
   /* 在指標變數中儲存的地址 */
   printf("Address stored in ip variable: %p\n", p );    // 結果為bffd8b3c
 
   /* 使用指標訪問值 */
   printf("Value of *ip variable: %d\n", *p );    //結果為20
 

指標的運算
1、自增自減
int *p ++;
若p指向記憶體位置1000,執行完以上語句就會變為1004,整數四個位元組。若p為指向字元型別的指標,執行上面語句會變為1001。
2、比較大小
比較的是地址的前後,後面的大於前面的
3、迴圈陣列
利用自增自減迴圈去除陣列的值

C語言允許指標指向指標,定義需要兩個星號 int **p = NULL;
當然,指標也可以用作函式引數和返回型別。
函式指標
指標變數是用來儲存變數地址的變數,函式指標是指向函式的指標變數。
函式指標可以用作回撥函式

void int get(int a,int b) ;
int *p (int ,int )  = &get;
p(1,5);     //呼叫get函式