黑马程序员—枚举、宏定义、typedef、递归
来源:互联网 发布:hap编码软件 编辑:程序博客网 时间:2024/06/05 13:30
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、枚举
表示固定的几个取值;大多用来与同事之前的交流。
1、定义枚举类型
enum Season
{
spring,
summer,
autumn,
winter
};//大括号中代表值,以后取值只能为括号中的固定几个值。
2、定义枚举变量
enum Season s = summer;
#include <stdio.h>int main(){ enum Sex { Man, Woman, Unkown}; // 0男 1女 -1不详 //int sex = 3; //enum Sex s = Unkown; // 1.定义枚举类型 enum Season { spring = 1, summer, autumn, winter }; // 2.定义枚举变量 enum Season s = 100000; printf("%d\n", s); return 0;}
二、宏定义
1、不带参数的宏定义
为预处理指令,以#号开头。用来定义常量,宏名一般用大写或者以k开头;
某一个值整个文件都用得上,用宏定义;
例外:出现在双引号中不替换值;
预处理指令在代码翻译成0和1之前执行;
位置可以随便写;但是有作用域:从编写指令的那一行开始,一直到文件的结尾;
#undef COUNT:若想在某行使宏定义失效,取消定义。
#define COUNT /kCount 6
#undef COUNT /kCount
#include <stdio.h>#define COUNT 4int main(){ char *name = "COUNT"; printf("%s\n", name); #define COUNT 4 int ages[COUNT] = {1, 2, 67, 89}; for ( int i = 0; i<COUNT; i++) { printf("%d\n", ages[i]); } // 从这行开始,COUNT这个宏就失效#undef COUNT int a = COUNT; return 0;}
2、带参数的宏定义
宏定义只换代码,纯粹的替换,不运算;
注意:在后面的运算,每个参数加一个括号,结果值加一个括号;
效率比函数高;
#include <stdio.h>#define sum(v1, v2) ((v1)+(v2))#define pingfang(a) ((a)*(a))int main(){ int c = pingfang(5+5)/pingfang(2); printf("c is %d\n", c); /* int c = sum(2, 3) * sum(6, 4); printf("c is %d\n", c);*/ /* int a = 10; int b = 20; int c = sum(a, b); printf("c is %d\n", c); //int c = sum(a, b);*/ return 0;}
三、typedef
1、作用
给已经存在的类型起一个新的名称;
2、适用场合
基本数据类型
typedef int MyInt;typedef MyInt MyInt2;
指针
typedef struct Person{ int age;} * PersonPoint;
结构体
/*struct Student{ int age;};typedef struct Student MyStu;*//*typedef struct Student{ int age;} MyStu;*/
枚举
typedef enum { Man, Woman} MySex;
指向函数的指针
typedef int (*MyPoint)(int, int);int minus(int a, int b){ return a - b;}int sum(int a, int b){ return a + b;}//MyPoint p = sum;//MyPoint p2 = minus;//int (*p)(int, int) = sum;//int (*p2)(int, int) = minus;
四、递归
条件
1、函数自己调用自己;
2、必须有个明确的返回值;
#include <stdio.h>int pow2(int b, int n);int main(){ int c = pow2(3, 2); printf("%d\n", c); return 0;}/* pow2(b, 0) == 1 pow2(b, 1) == b == pow2(b, 0) * b pow2(b, 2) == b*b == pow2(b, 1) * b pow2(b, 3) == b*b*b == pow2(b, 2) * b 1> n为0,结果肯定是1 2> n>0,pow2(b, n) == pow2(b, n-1) * b */int pow2(int b, int n){ if (n <= 0) return 1; return pow2(b, n-1) * b;}/*int pow2(int b, int n){ // 用来保存计算结果 int result = 1; //result *= b; //result *= b; //result *= b; //result *= b; //.... //n次 for (int i = 0; i<n; i++) { result *= b; } return result;}*/
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
- 黑马程序员—枚举、宏定义、typedef、递归
- 黑马程序员 《ios零基础教程》 --补齐算法、宏定义、typedef、递归 2014-4-20总结
- 黑马程序员------C语言-----宏定义、typedef、static和extern、递归
- 黑马程序员--定义枚举
- 黑马程序员——递归与枚举
- 黑马程序员——c语言基础:枚举和typedef
- 黑马程序员--c语言:结构体、枚举、预处理指令、typedef、static与extern、递归思想
- 黑马程序员——枚举、预处理指令和递归
- 黑马程序员———C语言———【枚举、typedef、宏、static和extern、文件操作】
- 黑马程序员:枚举类型的定义
- 黑马程序员—枚举
- 黑马程序员---C语言基础---结构体、枚举、typedef、宏、static和extern
- 黑马程序员————C语言——结构体、枚举、typedef
- 黑马程序员——零基础学习iOS开发——08 结构体、枚举、typedef
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- 【黑马程序员】iOS学习之路——C语言之宏定义、条件编译和条件包含及typedef
- 黑马程序员--typedef关键字和结构体 枚举类型
- 黑马程序员——C语言学习——预处理指令、extern与static、typedef、递归
- C语言及程序设计提高例程-4 函数的返回值
- C语言及程序设计提高例程-2 模块化程序设计及C语言中的函数
- C语言及程序设计提高例程-5 函数的参数
- 我的简历
- C语言及程序设计提高例程-6 参数传递方式:传值与传地址
- 黑马程序员—枚举、宏定义、typedef、递归
- 【Objective-C】14-内存管理
- Qt菜单和工具条
- 浅谈关键字static和extern
- QT之菜单栏QMenu,下拉菜单QAction,工具栏QToolBar的使用(二)
- 翻译经典之《Cisco Lan Switching》第六章 理解生成树(九):两种BPDU类型
- 数据库AR之关联查询
- Hadoop Hive sql语法详解
- 怎样控制Qt标题栏(How can I handle events in the titlebar and change its color etc ? )