码迷,mamicode.com
首页 > 其他好文 > 详细

结构体

时间:2019-06-22 23:48:00      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:变量   结构   string   不能   结构体   表示   无法   地址   两种   

结构体

  为什么会出现结构体

    为了表示一些复杂的数据,而普通的基本类型的变量无法满足要求

  什么叫结构体

    结构体是用户根据自己的实际需要定义的复合数据类型

#include <stdio.h>
#include <string.h>

struct Student
{
    int sid;
    char name[200];
    int age;
}; //分号不能省

int main()
{
    struct Student st = {1000, "zhangyan", 20};
    printf("%d %s %d\n",st.sid, st.name, st.age);
    
    st.sid = 99;
    //st.name = "lisi";  //error
    strcpy(st.name, "lisi");
    st.age = 20;
    printf("%d %s %d\n",st.sid,st.name, st.age);
    return 0;
}

 

  如何使用结构体

    两种方式:

      struct Student st = {1000, "zhangyan", 20};

      struct Student * pst = &st; 

        1. st.sid

        2. pst -> sid  pst所指向的结构体变量中的的sid这个成员(通常使用第二个)

   注意事项:

    结构体变量不能加减乘除,但可以相互赋值

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

#include <stdio.h>
#include <string.h>

struct Student
{
    int sid;
    char name[200];
    int age;
}; //分号不能省

void f(struct Student * pst);
void g(struct Student st);
void g2(struct Student * );
int main()
{
    struct Student st; //已经为st分配好地址
    f(&st);
    g2(&st);
    //printf("%d %s %d\n", st.sid, st.name, st.age);
    return 0;
}
//这种方式耗内存,耗时间,不推荐
void g(struct Student st)
{
   printf("%d %s %d\n", st.sid, st.name, st.age);
}

void g2(struct Student *pst)
{
    printf("%d %s %d\n", pst->sid, pst->name, pst->age);
}
void f(struct Student * pst)
{
    (*pst).sid = 99;
    strcpy(pst->name, "zhangsan");
    pst->age = 22;
}

 

    

 

结构体

标签:变量   结构   string   不能   结构体   表示   无法   地址   两种   

原文地址:https://www.cnblogs.com/spore/p/11070876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!