黑马程序员_C_结构体与预处理

来源:互联网 发布:室内温度检测软件 编辑:程序博客网 时间:2024/05/21 07:05

结构体与预处理

1.  结构体的基本概念

#include <stdio.h>

 

int main(int argc,constchar * argv[])

{

    //构造类型:由基本数据类型组成类型,但是构造类型里成员也可以使用构造类型

    int num[4] = {1,2,3,4};

    //Person age int height float name char *

   

   //  变量类型变量名称

    int a =10;

//   结构体类型结构体变量名

//   定义结构体的格式

    /*

    struct结构体类型名称{

//        结构体成员

        数据类型名称成员名称;//注意这个地方是分号不是一个逗号

        数据类型名称1成员名称1;

        数据类型名称2成员名称2;

    };

    */

//  定义结构体类型时候系统不会为该结构类型分配存储空间

    struct Person{

        int age;

        float height;

        char *name;

    };

   

    //初始化结构体第一种方式先定义结构体变量然后再初始化

//    通过结构体类型定义结构体变量系统会为这个结构体变量分配存储空间

    structPerson p;

//  结构体第一次赋值称为结构体的初始化

    p.age =30;

    p.height =1.73f;

    p.name ="zbz";

   

//    printf("age = %d,height = %.2f,name =%s\n",p.age,p.height,p.name);

   

    int nums1[3] = {1,2,3};

//    结构体初始化的第二种方式

    structPerson p1 = {24,1.8f,"xtf"};

   

//    printf("age = %d,height = %.2f,name =%s\n",p1.age,p1.height,p1.name);

    int nums[3] = {[1] =10,[2]=12 };

   

    structPerson p2 = {.height = 2.2f,.name ="ym",.age =36 };

    printf("age = %d,height =%.2f,name = %s\n",p2.age,p2.height,p2.name);

   

    return0;

}

 

2.  结构体的多种定义形式

/*

     结构体的第一种定义方式先定义结构体类型再定义结构体变量

    struct Person{

        int age;

        char* name;

    };

   

    struct Person p;

   

    */

   

//    结构体的第二种定义方式,定义结构体的同时,定义变量

    /*

//    结构体类型不可以重复定义

    struct Person{

        int age;

        char* name;

    } pp,p2,p3 ;

//   只有定义结构体变量的时候才可以使用一次性整体赋值的方式

    pp.age = 20;

    pp.name = "zsf";

   

    struct Person{

        int age;

        char* name;

    } p4;

     */

//  第三种方式:定义匿名的结构体类型,同时定义结构体变量

//   缺点:结构类型不能重复使用

2.条件编译

//条件编译的注意点

/*

 #if条件表达式

    语句;

   。。。

 #elif条件表达式1

    语句;

 #else

    语句

 #endif

 

 */

/*

    条件编译的作用:只有满足条件的代码才会被编译

 */

/*

    1、条件表达式中只能使用宏或者常量

    2、提交编译必须使用#endif结束

 */

 

//#define A 10

4.带参的宏定义

//带参数的宏定义格式#define宏名(参数列表)参数表达式

//注意点:1、宏名与()之间不可以有空格

//       2、参数列表中不可以有数据类型

//       3、一般情况下参数表达式中的所有成员及结果都需要加上()

 

//带参数的宏定义的作用:简单使用参数表达式替换掉出现宏调用的地方,仅仅是做一个替换操作

//当时运算比较简单时候使用不带参数的宏定义,若运算比较复杂还是使用函数

//带参数宏定义效率更高,因为带参数的宏定义不涉及函数调用,存储空间的分配与释放

 

#define SUM(x,y) (x + y)

 

#define PF(x,y) ((x) *(y))

 

int main(int argc,constchar * argv[])

{

//    int result = sum(2,4);

//   int result = SUM(2, 4)/ 2;

   

    int result =PF(2 +2,2 +10)/PF(2,2);//((2 + 2) * (2 +10))/((2)*(2))

   

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 离婚小孩的户口怎么办 离婚孩子落户口怎么办 父母离婚孩子出生证怎么办 离婚怎么办孩子的户口 离婚了儿子户口怎么办 性格不合离婚 孩子怎么办 前夫不迁走户口怎么办 我想离婚老婆不同意怎么办 要离婚没身份证怎么办 老婆怀孕想离婚怎么办 我老婆起诉离婚怎么办 父母冷战我该怎么办 经常跟父母亲吵架怎么办 14岁父母离婚怎么办 夫妻为钱吵架怎么办 离婚后担心孩子怎么办 不爱对方有孩子怎么办 爸和大伯吵架怎么办 孩子和家长吵架怎么办 老公吵架摔东西怎么办 楼上吵架摔东西怎么办 宿友没素质的人怎么办 父母人品差自私怎么办 家里穷压力大怎么办 偏执型人格障碍怎么办 遇到低素质保安怎么办 和老婆性格不合怎么办 当心理阴暗时怎么办 孩子胆子小怎么办呢? 父母伤亡的孩子怎么办 小孩上课老是走神怎么办 小孩上课老走神怎么办 小孩上课爱走神怎么办 孩子对学习成绩无所谓怎么办 孩子脾气特别倔强怎么办 没有规矩的孩子怎么办 孩子情商太低怎么办 4岁宝宝缺乏自信怎么办 孩子害羞不自信怎么办 说话脸红的人怎么办 胆小自卑不自信怎么办