C语言第九天课堂笔记<详细+注释>

这篇博客主要介绍了C语言中的宏定义,包括无参数宏、带参数宏、计算两个数的最大值和最小值的宏定义。此外,还讲解了条件编译的三种方式:`#ifdef`、`#ifndef` 和 `#if` 的使用。内容涵盖了宏定义的命名规范和在实际代码中的应用示例。
摘要由CSDN通过智能技术生成

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值