#include <stdio.h>
结构体初阶 --结构体也是部分值的集合,但是值的类型可以不同~
 1、结构体的创建
 struct B
 {
     char c;
     short s;
     double d;
 };
struct stu
 {
     //结构体的成员变量
     struct B sb;    //结构体的成员可以是其他的结构体
     char name[20];
     int age;
     char id[20];
     
 }s1,s2;
//s1和s2也是结构体变量
 //s1,s2是全局变量
 //全局变量
 //在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括.c 和.h 文件
int main()
 {
     //s是局部变量
     //定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。
    struct stu s = { {'w',20,3.14},"张三",30,"20200422" };
     //printf("%c\n", s.sb.c);
     //printf("%s\n", s.id);
     //struct stu* ps = &s;
     //printf("%c\n", (*ps).sb.c);
     //printf("%c\n", ps->sb.d);
     return 0;
 }
 写一个函数打印s的内容
 struct stu
 {
     char name[20];
     int age;
     char id[20];
 }; 
void print1(struct stu t)
 {
     printf("%s %d %s\n", t.name, t.age, t.id);
 }
void print2(struct stu *ps)
 {
     printf("%s %d %s\n", (*ps).name, ps->age,ps->id);
 }
 int main()
 {
     struct stu s = { "张三", 30, "20200422" };
     print1(s);        //传值调用
     print2(&s);        //优先选用传址调用:函数传惨时,参数需要压栈。如果传递一个结构体对象过大,参数压栈系统开销较大,会导致性能下降!
     return 0;        //栈:一种数据结构,特点:先进的后出,后进的先出
 }
int Add(int x, int y)
 {
     int z = 0;
     z = x + y;
     return z;
 }
int main()
 {
     int a = 3;
     int b = 5;
     int c = 0;
     c = Add(a, b);
     return 0;
 }











