内容纲要
枚举
定义
格式:
enum 枚举名{枚举元素1,枚举元素2,。。。。。}
第一个枚举成员的默认值为整型的 0,也可以指定值,后续枚举成员的值在前一个成员上加 1。
枚举变量
格式:
- 先定义枚举类型在定义枚举变量
enum DAY{
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
};
enum DAY day;
- 定义枚举类型的同时定义枚举变量
enum DAY{
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
} day;
- 省略枚举名称,直接定义枚举变量
enum{
MON,
TUE,
WED,
THU,
FRI,
SAT,
SUN
} day;
#include <stdio.h>
enum DAY{
MON,
TUE,
WED,
THU=4,
FRI,
SAT,
SUN
};
int main()
{
enum DAY day;
day = SUN;
printf("%d",day);
return 0;
}
运行结果:
7
C 语言中,枚举类型是被当做
int
或者unsigned int
类型来处理的,所以可以通过强制数据类型转换将整数转换为枚举。
函数
函数是C语言中最基本的模块,通过调用预先定义的库函数或者自定义的函数来完成特定功能。
定义
格式:
返回值类型标识符 函数名(形参列表){
语句体;
return 返回值;
}
- 返回值类型由函数返回值的数据类型决定,无返回则为
void
。 - 函数之间有数据传送可根据传送的个数设定参数个数,无须数据传递则省略形参列表。
返回值:是指函数被调用后,执行函数体的结果进行返回给调用的变量,返回值的类型与定义的返回值类型应该一致。
函数声明
在主函数调用之前必须对函数进行声明,一般在函数顶部。
格式:
返回值类型 函数名(参数列表);
参数
- 形式参数:在定义函数时,若需要传值,需要预先定义的变量为形式参数。形参只有被调用时才分配内存单元,调用结束后释放所分配内存单元,只在函数内有效。
int sum(int a,int b);
其中a,b就是形式参数
- 实际参数:实参是进行函数调用时,传递給形参的值。实参的值应该与形参的类型保持一致,并且只能是实参向形参传值。
int c = sum(1,2);
其中
1,2
就属于实参,向形参传值。
可变参数
在函数中调用可变数量的参数
定义:
返回值类型 函数名(int num/*可变参数个数*/,...){}
#include <stdio.h>
#include <stdarg.h>
//必须包含<stdarg.h>的头文件
int fun(int num, ...){
int i,sum = 0;
//num表示可变参数的数量, ...表示可变参数
va_list valist;
//在stdarg.h头文件中定义的可变参数列表
va_start(valist,num);
//为num个参数初始化
for(i = 0;i < num;i++){
sum += va_arg(valist,int);
//访问每个可变参数并且赋值
}
//清理valist变量的内存
va_end(valist);
return sum;
}
int main()
{
printf("%d",fun(2,2,3));
return 0;
}
运行结果:
5
函数调用
格式:
函数名(参数列表);
例如:
int a = sqrt(9.0);
变量作用域
变量作用域是指从变量定义在内存中创建存储单元到从内存中销毁,变量的有效性范围。
局部变量
在函数或语句块内声明定义的变量为局部变量,保存在栈中,只有被函数调用时才分配变量的存储单元。
#include <stdio.h>
int main(){
int a, b;
a = 15;
b = a++;
printf("%d,%d", a, b);
return 0;
}
局部变量被定义后,需要手动进行初始化。
全局变量
在所有函数外声明定义的变量是全局变量,存储在内存的全局存储区中,占用静态的存储单元。
#include <stdio.h>
int a, b;
int main(){
a = 15;
b = a++;
printf("%d,%d", a, b);
return 0;
}
全局变量被定义时,系统自动初始化变量。其中,整型和浮点型默认值为
0
,字符型默认值为\0
,指针等构造类型为NULL
。
留言