05结构体的使用

结构体

  • 什么叫结构体

    1. 结构体是用户根据实际需要自己定义的复合数据类型
  • 为什么会出现结构体

    1. 为了表示一些复杂的数据,而普通的基本类型变量无法满足要求
  • 如何使用结构体:两种方式

    1. struct Student st = {1000, "zhangsan", 20};
      
    2. struct Student * pst = &st;//定义结构体指针变量,把结构体地址赋予
      
    3. st.sid
      
    4. pst->sid//结构体指针变量pst 指向 结构体变量中的sid成员
      
      • 注意事项:结构体变量不能加减乘除,但可以相互赋值。
  • C语言中复杂变量通过结构体表现,Java通过类来表现

    class Student
    {
        int sid;
        String name;
        int sage;
        void inputStudent()
        {
            
        }
        void showStudent()
        {
            
        }
    }
    

    结构体

    struct Student
    {
        int sid;
        String name;
        int sage;
        
    };//分号不能省
    

    程序

    # include<stdio.h>
    
    struct Student//定义数据类型,有三个成员。名字:struct Student
    {
        int sid;
        char name[200];
        int age;
    };//分号不能省
    
    int main(void)
    {
        struct Student st = {1000, "zhangsan", 20};
        printf("%d %s %d\n",st.sid, sid.name, st.age);
        st.sid = 99;
        //st.name = "list";//error
        strcpy(st.name,"list");
        st.age = 22;
        printf("%d %s %d\n", st.sid, st.name, st.age);
        //printf("%d %s %d\n", st);//error
        
        return 0;
    }
    
    ```c
    int main(void)
    {
        struct Student st = {1000, "zhangsan", 20};
        //st.sid = 99;    //第一种方式
        struct Student *pst;
        pst = &st;
        pst->sid = 99;//pst->sid 等价于 (*pst).sid 而(*pst)
        
        return 0;
    }
    ```
    
void f(struct Student * pst);
int main(void)
{
    struct Student st;
    f(&st);
    printf("%d %s %d\n",st.sid, st.name,st.age);
    
    return 0;
}
void f(struct Student * pst)
{
    (*pst).sid = 99;
    strcpy(pst->name,"zhangsan");
    pst->age = 22;
}

不推荐的方式:

  • 耗内存和时间,没有指针的占内存小和速度快。
int main(void)
{
    struct Student st;
    g(st);
    printf("%d %s %d\n",st.sid, st.name,st.age);
    
    return 0;
}
void f(struct Student st)
{
    st.sid = 99;
    strcpy(st.name,"zhangsan");
    st.age = 22;
}
posted @   夜月明  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示