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;
(7)枚举的适用场合
一个变量有几种可能的值,我们可以将变量制定的值一一列出
(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[])
#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;
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 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;
}
{
int c = sum(10);
printf("c = %d",c);
return 0;
}