C语言第九课

主要内容:高级指针(结构体指针)

一、结构体指针

       指向结构体变量的指针叫做结构体指针

       typedef   struct   student  Student ;

       Student  stu  = { 0 } ;

       Student  *p = &stu ;

       Student  *:结构体类型的指针(类型)

       p:结构体指针变量(变量名)

       &stu:结构体变量地址(初值)

       结构体访问成员变量

       示例:

               typedef  struct  {

                         char  name[20];

                         char  gender;

                         int   age;

               }  Student;

              Student  stu1 = { "张平辉", ' m ' ,21};

              Student  stu2 = {"辉子", ' m ' ,21};

              Student  *p1 = &stu1;

              Student  *p2 = &stu2;

              printf("%s %c %d",p1.name,  p1.gender,  p1.age); / / 方式一

              printf("%s %c %d",p2 ->name, p2 ->gender, p2.age); / / 方式二

        注意:(*p)对结构体取值后是结构体变量

                     . gender是访问成员变量

                     使用指针 “ -> ” 可以直接访问结构体的成员变量  p2 ->name

二、结构体数组与指针的关系

       结构体数组的数组名是一个结构体指针常量

       Student  stus   =  {0};

       Student  *p  = stus;

       p 为结构体指针变量,stus为数组名,等同于 int  arr[2] = {0}; int *p = arr; 

       结构体指针访问数组内元素使用下标

       p ->数组内容   访问数组元素

      (p + 1)-> 数组内容将指针向下移动所定义数组类型的字节数

      (p - 1)->数组内容将指针向上移动所定义数组类型的字节数

       结构体指针作为函数参数时:

       函数操控结构体指针时,需要传入结构体指针首地址和元素个数

三、预编译指令

       宏定义:在编译前进行替换

       #define  PII  3.14  / / 将PII的值定为3.14在以后程序运行期间,PII = 3.14

       注意:宏不是变量

       带参数的宏

       示例:#define   MAX ( a, b)   ( a > b ? a : b )  / / 相当于一个函数

       MAX ( 3, 5)  / / 编译输出5

四、条件编译(不常用)

       根据不同的条件编译不同的代码

       三种形式:

              1  #ifdef   标示符

                 代码段1

                  #else

                 代码段2

                  #endif

                 如果标示符被#ifdef过,执行代码段1,否则执行代码段2

             2   #ifndef   标示符

                 代码段1

                 #else

                代码段2

                 #endif

                如果标示符未被#define过,执行代码段1,否则执行代码段2

            3   #if  常量表达式

                代码段1

                 #else

                代码段2

                 #endif

                如果常量表达式结果为非0执行代码段1,否则执行代码段2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值