zoukankan      html  css  js  c++  java
  • C语言学习1——结构体剖析

    一、定义结构体变量的方法

    1.1先声明结构体类型在定义变量名

    例如:

    a.声明结构体类型

    struct student

    {

        int num;

        char name[20];

        char sex;

        int age;

    }

    b.定义结构体变量

    struct student stu1,stu2;

    1.2声明类型的同时定义变量

    struct student

    {

    int num;

    char name[20];

    char sex;

    int age;

    }stu1,stu2;

    1.3直接定义结构体类型变量

    struct

    {

    int num;

    char name[20];

    char sex;

    int age;

    }stu1,stu2;

    二、结构体变量的引用

    结构体变量名.成员名

    stu1.num = 1000;

    三、结构体变量的初始化

    和其他类型变量一样,对结构体变量可以在定义时指定初值

    struct

    {

    int num;

    char name[20];

    char sex;

    int age;

    }stu1={10010,"xiaoming",'M',24};

    四、结构体数组

    4.1定义结构体数组

    和定义结构体变量的方法相仿,只需要说明其为数组即可。

    例如:

    struct student

    {

    int num;

    char name[20];

    char sex;

    int age;

    };

    struct student stu[4];

    也可以直接定义一个结构体数组,

    例如:

    struct student

    {

    int num;

    char name[20];

    char sex;

    int age;

    } stu[4];

    struct {

    int num;

    char name[20];

    char sex;

    int age;

    } stu[4];

    4.2结构体数组初始化

    struct {

    int num;

    char name[20];

    char sex;

    int age;

    } stu[2]={{10010,"xiaoming",'M',24},{10020,“xiaogang”,'F',23}};

     初始化的一般形式为定义数组的时候后面加上“={初值表列}

    五、指向结构体类型数据的指针

    5.1指向结构体变量的指针

    例如:

    struct student

     {

    int num;

    char name[20];

    char sex;

    int age;

    }

    struct student stu1;

    struct student *Pstu;

    Pstu = &stu1;

    下面几条语句是等价的

    stu1.num = 100;

    (*p).num = 100;

    p->num = 100;

    也就是说,以下三种形式等价:

    a.结构体变量.成员名

    b.(*p).成员名

    c.p->成员名

    另外,有以下几种运算:

    p->n 得到P指向的结构体变量中的成员n的值

    p->n++得到P指向结构体变量中的成员n的值,用完该值后使它加1

    ++p->n得到P指向结构体变量中的成员n的值加1,然后再使用它

    5.2指向结构体数组的指针

     

    struct {

    int num;

    char name[20];

    char sex;

    int age;

    } stu[2]={{10010,"xiaoming",'M',24},{10020,“xiaogang”,'F',23}};

     

    struct student *p;

    for(p = stu;p<stu+3;p++)

    printf("%5d %-20s %2c %4d ",p->num,p->name,p->sex,p->age);

  • 相关阅读:
    学习笔记——Maven settings.xml 配置详解
    工作随笔——tar命令批量解压
    工作随笔——xshell4安装后应该做的一些事
    容器中跨主机的网络方案-Weave
    使用kubeadm安装kubernetes
    AzureStack混合云大数据解决方案
    容器中跨主机的网络方案-flannel
    一行删除所有docker container的命令
    安装Kafka集群
    Azure VM的加速网络
  • 原文地址:https://www.cnblogs.com/maze2015/p/4401373.html
Copyright © 2011-2022 走看看