结构体

Posted panghushalu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体相关的知识,希望对你有一定的参考价值。

一 赋值和初始化

# include <stdio.h>
struct Student//只是定义了一个数据类型,并没有定义变量
{
    int age;
    float score;
    char sex;
} ;

int main ()
{
    //类似于数组 
    struct Student st1={80,66.6,'F'};//初始化 定义的同时赋初值 
    struct Student st2;//如果定义完之后只能分开赋值 
    st2.age=10;
    st2.score=88;
    st2.sex='F'; 
    
    printf("%d %f %c
",st1.age,st1.score,st1.sex); 
    printf("%d %f %c
",st2.age,st2.score,st2.sex);
    
    return 0;
}

二 如何取出结构体变量中的每一个成员
1.结构体变量名.成员名
2.指针变量->成员名 这种方式更常用

# include <stdio.h>
struct Student
{
    int age;
    float score;
    char sex;
} ;

int main ()
{
    struct Student st1={80,66.6,'F'};
    st1.age;//第一种方式
    struct Student* p = &st1;//构造指针变量 
    p->age;//第二种方式 p->age在计算机内部会转换为(*p).age硬性规定 又等价于p.age 
    return 0;
}

三 结构体变量和结构体指针变量作为函数参数传递的问题

# include <stdio.h>
void InputStudent(struct Student* p);
void OutputStudent(struct Student ss);
struct Student
{
    int age;
    float score;
    char sex;
} ;

int main ()
{
    struct Student st1;
    InputStudent(&st1);
    OutputStudent(st1);
    return 0; 
}
void OutputStudent(struct Student ss)//只输出不修改的话不用使用指针变量 
{
    printf("%d %f %c
",ss.age,ss.score,ss.sex);
}
void InputStudent(struct Student* p)
{
    p->age=10;
    p->score=99.99;
    p->sex='F';
}

以上是关于结构体的主要内容,如果未能解决你的问题,请参考以下文章

在C代码中将结构体变量作为参数传递效率忒低

如何优化C ++代码的以下片段 - 卷中的零交叉

20160221.CCPP体系详解(0031天)

Golang PrintfSprintf Fprintf 格式化

Go 系列教程 —— 17. 方法

VSCode自定义代码片段5——HTML元素结构