其他分享
首页 > 其他分享> > 1、结构体

1、结构体

作者:互联网

1、为什么需要结构体

  为了表示一些复杂的事物,而普通的基本类型无法满足实际要。

2、求什么叫结构体
  把一些基本类型数据组合在一起形成的一个新的复合数据类型,这个叫做结构体。

3、如何定义结构体

/*----------------------------------------------
结构体的定义方式
-----------------------------------------------
3种方式,推荐使用第一种:
-----------------------------------------------*/

# include <stdio.h>

//第一种方式     这只是定义了一个新的数据类型,并没有定义变量
struct Student
{
    int age;
    float score;
    char sex;
};

//第二种方式
struct Student2
{
    int age;
    float score;
    char sex;
} st2;

//第三种方式
struct 
{
    int age;
    float score;
    char sex;
} st3;

int main(void)
{
    struct Student st = {80, 66.6, 'F'};    

    return 0;
}

4、怎样使用结构体变量

赋值和初始化
  定义的同时可以整体赋初值
  如果定义完之后,则只能单个的赋初值

/*----------------------------------------------
结构体变量的赋值和初始化
-----------------------------------------------*/

# include <stdio.h>

//第一种方式
struct Student
{
    int age;
    float score;
    char sex;
};

int main(void)
{
    struct Student st = {80, 66.6, 'F'}; //初始化  定义的同时赋初值
    struct Student st2;
    st2.age = 10;
    st2.score = 88;
    st2.sex = 'F';

    printf("%d %f %c\n", st.age, st.score, st.sex);          //80 66.599998 F
    printf("%d %f %c\n", st2.age, st2.score, st2.sex);       //10 88.000000 F
    
    return 0;
}

5、如何取出结构体变量中的每一个成员【重点】

1) 结构体变量名.成员名
2) 指针变量名-〉成员名(第二种方式更常用)

  指针变量名->成员名在计算机内部会被转化成(*指针变量名).成员名的方式来执行
  所以说这两种方式是等价的

/*----------------------------------------------
如何取出结构体变量中的每一个成员
-----------------------------------------------*/

# include <stdio.h>

struct Student
{
    int age;
    float score;
    char sex;
};

int main(void)
{
    struct Student st = {80, 66.6F, 'F'}; //初始化  定义的同时赋初值
    struct Student * pst = &st;  //&st不能改成st

    pst->age = 88;//第二种方式   
    st.score = 66.6f; //第一种方式  66.6在C语言中默认是double类型,如果希望一个实数是float类型,则必须在末尾加f或F, 
//因此66.6是double, 66.6f或66.6F是float printf("%d %f\n", st.age, pst->score); //88 66.599998:因为浮点型数据不能保证每一个数字都能准确存储 return 0; } /*----------------------------------------------------------------------------------------------- 1.pst->age在计算机内部会被转化成(*pst).age,没有什么为什么,这就是一>的含义,这也是一种硬性规定 2.所以pst->age等价于(*pst).age也等价于st.age 3.我们之所以知道pst->age等价于st.age,是因为pst->age是被转化成了(*pst).age来执行 4.pst->age的含义: pst所指向的那个结构体变量中的age这个成员 ------------------------------------------------------------------------------------------------*/

 

标签:66.6,struct,age,st,score,pst,结构
来源: https://www.cnblogs.com/zh-xiaoyuan/p/12642120.html