1. 常量
爲何使用常量:
防止數據在程序中被任意修改,形成先後不一致
能夠很方便的批量進行調整,能作到快捷、方便、安全
使用const進行定義常量
2.宏
使用宏定義常量:
#define開頭的語句稱爲宏定義
#做用是預編譯
#define 宏名 對應的表達式
#define Age 1
#define Sum(a,b)((a)+(b))
#define Max(a,b)((a)>(b)?(a):(b))
注意:最後沒有分號。
宏定義不須要類型,由於只是文本替換。
變量名不要與宏名重複,宏定義會用宏對應的值替換掉程序中出現的宏名(引號裏的除外)
#include Sum(a,b)((a)+(b))
使用宏要注意,必須在使用以前進行定義。
3.枚舉
(1) enum 枚舉名 {枚舉元素1,枚舉元素2,,,,,};
enum Season {spring,summer,autumn,winter};
一組有限的常量稱爲枚舉
枚舉元素是常量不能賦值
enum是用來聲明枚舉類型數據,它能夠像數組同樣存儲許多的元素,可是不一樣於數組的是,它除了數字不能存儲之外,其餘類型的如字母、特殊符號、漢字均可以以任意組合存入enum當中去。
(2) enum的聲明:enum A { a, b, c };
enum聲明不一樣於數組,其只能夠聲明在Main()方法體外,在Main()中能夠被調用。
(3) enum的枚舉數值默認是從0開始的,日後依次加1,可是也能夠強制元素序列進行改變。enum A {a=1, b, c}; 這樣就能夠實現了。
(4) enum能夠經過枚舉名加點經過枚舉的元素訪問枚舉數值。
例:
int i = (int)A.a;
枚舉值雖然是int類型的,可是也必須進行顯示的強制轉換。
(5) 一樣enum也能夠經過枚舉數值來訪問枚舉內的各個元素。方法是:Console.WriteLine( " (A)1 " );這樣就能夠訪問enum內的各個元素。
(6) 定義枚舉變量的三種形式:
1.先定義枚舉類型,再定義枚舉變量: enum Season s;(s是枚舉變量)
2.定義枚舉類型的同時定義枚舉變量: enum Season {spring,summer,autumn,winter} season;
3.省略枚舉類型名,直接定義變量: enum {a,b} c;
一個變量有幾種可能的值,咱們能夠將變量制定的值一一列出
(8)枚舉的使用事項
enum color{red=0,orange=1,green=3,blue=4};
enum color{red=10,orange,green,blue};
(9)遍歷須要注意的地方,枚舉類型的元素的值要具備連續性纔可使用for遍歷。
(10)枚舉的好處
提升代碼可讀性
便於程序維護
4.函數
用函數實現模塊化程序設計。
函數的定義:
返回值類型 函數名(形參列表,多個形參要對變量的類型單個聲明)
{
函數體
return 函數值;
}
將函數的定義寫在主函數(main函數)以前。
注意:
有返回值的函數,return的類型要與函數返回值類型一致,無返回值,不能return一個值,可是可使用return。
函數調用的結果就是return返回的值,
調用函數時,實參列表的個數要與形參保持一致,而且類型也要一致。
變量的做用域:
(
1)局部變量:(在某函數體內時),變量的做用域取決於其定義的大括號內,若是在函數的形參列表內,其做用域屬於該函數。
(2)全局變量:其做用域取決於其聲明的位置,在其位置以後的,都可以使用。
注意: 當局部變量與全局變量名字重複時,變量的值取決於離其最近的賦值運算。
函數調用的通常形式:
函數名(實參表列)
例:
//使用函數調用求兩個數中比較大的數
#include <stdio.h>
int max(int a,int b)
{
int m;
m = a > b?a:b;
return m;
}
int main(int argc, const char * argv[])
{
int x,y,z;
printf("請輸入兩個整數:");
scanf("%d%d",&x,&y);
z = max (x,y); //函數調用
printf("max=%d",z);
return 0;
}
5.函數的遞歸調用:
在調用一個函數的過程當中又出現直接或間接地調用該函數自己,稱爲該函數的遞歸調用。
例:
用遞歸函數計算10之內偶數的和;
#include <stdio.h>
int sum(int a)
{
if(a == 0)
{
return 0;
}
int b = a + sum(a - 2);
return b;
}
int main(int argc, const char * argv[])
{
int c = sum(10);
printf("c = %d",c);
return 0;
}