结构体

简介: 结构体:结构是一些值的集合,这些值称为成员变量,每个成员可以是不同的类型变量。结构体成员的类型:可以是:标量,数组,指针,结构体…

结构体

结构是一些值的集合,这些值称为成员变量,每个成员可以是不同的类型变量。


结构体成员的类型:

可以是:标量,数组,指针,结构体…

struct student
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
};//分号不要少,因为是一条声明!!!


1.结构体创建的全局变量与局部变量:


struct student
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}s1,s2,s3;//是三个全局的结构体变量
int main()
{
   struct student s;//s是创建的结构体变量,这时候才有占用内存空间 
}


结构体变量重命名



2.结构体变量重命名

typedef:重新取名字

typedef struct student
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}stu;//给struct student重新取名字叫stu,stu是类型!!!


结构体变量如何初始化?



3.结构体变量如何初始化?

在创建的同时给其赋值

typedef struct student
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}stu;//分号不要少,因为是一条声明
int main()
{
   stu s1={"张三",18,"110","女"};
}


结构体中的结构体



4.结构体中的结构体:

(嵌套结构体的初始化)

struct S
{
    int a;
    char c;
    char arr[20];
    double d;
}
struct T
{
    char ch[10];
    struct S s;
    char *pc;
};
int main()
{
    char arr[]="hehe"
    struct T t={"hehe",{100,'a',"hehe",3.12},NULL}
    //里面的这个{}是struct S
    printf("%s\n",t.ch);
    printf("%s\n",t.s.arr);
}


5.结构体成员的访问


第一种:函数打印

void Print1(Stu tmp)
{
    printf("name:%s\n",tmp.name);
}
int main()
{
    Stu s={"lisa",18,"1100232","男"};
    Print1(s);
    return 0;
}


第二种:指针打印


void Print2(Stu* ps)
{
    printf("name:%s\n",ps->name);
}
int main()
{
    Stu s={"lisa",18,"1100232","男"};
    Print2(&s);
    return 0;
}


比较两种方法:

2较好–节省空间


结论:结构体传参要传结构体的地址


1.栈区的默认使用:

先使用高地址处的空间

再使用低地址处的空间

2.数组随下标增长

地址是由低到高变化的

20210206172956617.png

2021020617360567.png

压栈:放一个数据在栈叫压栈

出栈:删除一个元素


相关文章
【结构体】
【结构体】
29 0
|
6月前
|
编译器 C++
详解结构体
详解结构体
41 1
|
5月前
初识结构体
初识结构体
42 5
|
6月前
|
存储 算法 C语言
c结构体
c结构体
33 1
|
6月前
|
算法 C语言
结构体相关知识
结构体相关知识
|
6月前
|
算法 程序员 C++
|
编译器
C#视频-结构体
C#视频-结构体
56 0
C—结构体
C语言学习第十四弹
|
存储 C++