import
import “Student.h”
// 宏定义
define LTT 1
// 带参数的宏定义: 替换的过程
// 带参数的宏定义 参数使用什么名字 后面使用的时候 名字要保持一致
// #define MaxValue(A,B) a > b ? a : b
// 命名规范:
// 1.以小写k开头 后面驼峰 编写宏定义
// 2.全部大写
// #define kMaxValue(A,B) A > B ? A : B
define MaxValue(A,B) A > B ? A : B
// 计算两个数的最小值
// 一般宏定义的参数都是 以大写来写
define kMinValue(A,B) ((A) < (B) ? (A) : (B))
// 每个变量加括号,防止替换过程中由于符号的优先级影响运算结果
define kMul(A,B) ((A) * (B))
int main(int argc, const char * argv[]) {
// 条件编译的三种方式
// 第一种方式
// 判断宏定义之前有没有定义过
ifdef wa
printf("wa这个宏定义 已经被定义了\n");
else
printf("wa还没有被宏定义\n");
endif
// 第二种方式
// 判断宏定义之前没有定义过(和第一种相反)
ifndef wa
printf("wa还没有被宏定义\n");
else
printf("wa这个宏定义 已经被定义了\n");
endif
// 第三种方式
/**
* #if 常量表达式
代码段1;
#else
代码段2;
#endif
*/
// 可以用来确定上线和内侧状态的网络接口的切换
if 0
printf("真的 就执行这里");
else
printf("假的 就执行这里");
endif
// int a = 4;
// int b = 7;
// int max = MaxValue(a, b);
// printf(“%d\n”,max);
// int min = kMinValue(a, b);
// printf(“%d\n”,min);
// min = kMinValue(a + 6, b);
// printf(“%d\n”,min);
// min = kMul(a + 5, b);
// printf(“%d\n”,min);
//
// 需求:
// 创建一个学生类
// 声明一个结构体 成员变量 名字 性别 年龄 分数
// 在主函数中 声明一个结构体变量
// Student stu1 = {“wanglong”, “man”, 18, 88.8};
// 结构体指针 指向结构体的指针
// 此处需要用&
// Student *p = &stu1;
// *p 取出指针所指向的空间保存的值
// (*p).name
// printf(“%s\n”,stu1.name);
// printf(“%s\n”,(*p).name);
// 结构体当中 经常使用 -> 指向符
// printf(“%s\n”,p->name);
// 编写函数 打印所有的成员变量
// printStudent(p);
// printf(“%p\n”,p);
// printf(“%p\n”,&stu1);
// 结构体指针 指向结构体变量 就相当于指向结构体变量 第一个 成员变量
// printf(“%p\n”,p->name);
// CPoint m = {0,3};
// CPoint n = {4,0};
//
//
// CPoint *p1 = &m;
// CPoint *p2 = &n;
// printf(“%.2f”,DistanceOfTwoPoint(p1, p2));
// Student stu = {“lan ou zzz”, “man”, 15, 66.6};
// Student *p = &stu;
// change(p);
// 结构体指针 地址加1 相当于 加了一个整个结构体的字节数
// 需求:先声明三个结构体变量
// 在声明一个结构体数组保存三个学生
// Student stu1 = {” lutaotao”, “男”, 23, 89.9};
// Student stu2 = {” qiaodi”, “男”, 22, 90.9};
// Student stu3 = {“matingting”, “女”, 21, 95.9};
// Student stu[3] = {stu1, stu2, stu3};
// Student *p = stu;
// Student *p1 = &stu1;
// // 结构体指针 指向结构体数组 就相当于 指向结构体数组的首元素 并且 里面的元素的地址和结构体指针所代表的地址不在同一个存储区域内
// printf(“%p\n”,p); //0x7fff5fbff6a0
// printf(“%p\n”,&stu[0]);//0x7fff5fbff6a0
// printf(“%p\n”,p1); //0x7fff5fbff798
// printf(“%p\n”,p + 1); //0x7fff5fbff6d0
//
// // 如何利用指针 取出数组中的元素 *(p + 1)
// // (*(p + 1)).name
// printf(“%s\n”,(*(p+1)).name);
// printf(“%s\n”,(p + 1)->name); // 推荐
//
// // 编写函数 利用指针 打印结构体数组的每一个学生
// // printStructArray(p, 3);
// sortMan(p,3);
return 0;
}