• 文件包含与结构体


    1、文件包含

    (1)1个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。

    (2)文件包含允许嵌套,即在一个被包含的文件种包含另一个文件。

    (3)包含命令中的文件名可以用双括号括起来,也可以用尖括号括起来。但这两种形式是有区别的:使用尖括号表示在包含文件目录中去查找;使用双引号表示首先在当前的源文件目录中去查找,若未找到则到包含目录中去查找。

    条件编译

    预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件,这对程序的移植和调试是很有用的。

    规则:#ifdef 标识符

        程序段1

          #else

        程序段2

       #endif

    功能:若标识符已被#define命令过这对程序段1进行编译,否则对程序段2进行编译。若没有程序段2,则#else可不写。

    2、结构体

    有时需要将不同类型的数组和成一个有机的整体,以便于引用。

    定义一个结构体的一般形式为:

    struct 结构名

    {

      成员表列

    };

    成员表列由若干个成员组成,每个成员都是该结构的组成部分,对每个成员也必须做类型说明,其形式为:类型说明符  成员名

    例:

    struct student
    {
        int num;
        char name[20];
        char sex;
        int age;
        float score;
        char addr[30];
    }

    可采取以下三种方法定义结构体类型变量:

    (1)先声明结构体类型再定义变量名

    例:strct student  student1,student2;

    定义了student1和student2为strct student类型变量,即它们具有strct student类型的结构。

    在定义结构体变量后,系统会为之分配内存单元。

    (2)在声明类型的同时定义变量

    这种形式的定义一般形式为:

    struct 结构体名

    {

      成员表列

    }变量名表列;

    例:

    struct student
    {
        int num;
        char name[20];
        char sex;
        int age;
        float score;
        char addr[30];
    }student1,student2;

    (3)直接定义结构体类型变量

    一般形式为:

    struct 

    {

      成员表列

    }变量名表列;

    即不出现结构体名。

    3、结构体嵌套:

    例:

     1 #include "StdAfx.h"
     2 #include<stdio.h>
     3 #include<string.h>
     4 
     5 void main()
     6 {
     7     struct date
     8     {
     9         int month;
    10         int day;
    11         int year;
    12     };
    13     struct 
    14     {
    15         int num;
    16         char name[20];
    17         char sex;
    18         struct date birthday;
    19         float score;
    20     }boy1,boy2;
    21 }

    结构体变量的引用

    规则:(1)不能将一个结构体变量作为一个整体进行输入和输出。

    引用方式:结构体变量名.成员名

    ”.“是成员运算符,它在所有的运算符中优先级最高,因此可以把student1.num作为一个整体来看待。

    例:student1.num=100是将100赋值给student1变量中的成员num。

    例:

    #include "StdAfx.h"
    #include<stdio.h>
    
    
    void main()
    {
        struct date
        {
            int month;
            int day;
            int year;
        };
        struct 
        {
            int num;
            char *name;
            char sex;
            struct date birthday;
            float score;
        }boy1,boy2;
        boy1.num=007;
        boy1.name="jame";
        scanf("%c%f",&boy1.sex,&boy1.score);
        boy2=boy1;
        printf("Number=%d
    Name=%s
    ",boy2.num,boy2.name);
        printf("sex=%c
    score=%f
    ",boy2.sex,boy2.score);
    }

    (2)若成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级成员。只能对最低级的成员进行赋值或存取运算。

    例:

    #include "StdAfx.h"
    #include<stdio.h>
    
    
    void main()
    {
        struct date
        {
            int month;
            int day;
            int year;
        };
        struct 
        {
            int num;
            char *name;
            char sex;
            struct date birthday;
            float score;
        }boy1,boy2;
        boy1.num=007;
        boy1.name="jame";
        scanf("%c%f",&boy1.sex,&boy1.score);
        scanf("%d",&boy1.birthday.year);
        scanf("%d",&boy1.birthday.month);
        scanf("%d",&boy1.birthday.day);
        boy2=boy1;
        printf("Number=%d
    Name=%s
    ",boy2.num,boy2.name);
        printf("sex=%c
    score=%f
    ",boy2.sex,boy2.score);
        printf("birthday:%d/%d/%d",boy1.birthday.year,boy1.birthday.month,boy1.birthday.day);
    }

    (3)对结构体的变量成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)

    例:student2.score=student1.score;

    sum=student2.score+student1.score;

    (4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。

    例:

    #include "StdAfx.h"
    #include<stdio.h>
    
    
    void main()
    {
        struct date
        {
            int month;
            int day;
            int year;
        };
        struct 
        {
            int num;
            char *name;
            char sex;
            struct date birthday;
            float score;
        }boy1;
        boy1.num=007;
        boy1.name="jame";
        printf("The address of struct is %o:
    ",&boy1);
        printf("The address of num is %o:
    ",&boy1.num);
    }

    注:不能整体读入结构体变量。

    例:scanf("%d,%s,%c,%d,%f,%s",&student1);

    结构体变量的地址主要用作函数参数,传递结构体变量的地址。

  • 相关阅读:
    第十五章:Android 调用WebService(.net平台)
    第十四章:样式(Style)和主题(Theme)
    第十三章:常用控件下
    第十三章:常用控件上
    第十二章:Android数据存储(下)
    第十一章:Android数据存储(上)
    第十章:Intent详解
    PHP7.X连接SQLSERVER数据库(CENTOS7)
    CentOs install oracle instant client
    softmax
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10380521.html
Copyright © 2020-2023  润新知