#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;
}