C语言指针初阶(2),初试结构体
指针和数组

二级指针

指针数组
指针数组是指针还是数组?
答案:是数组。是存放指针的数组。
数组我们已经知道整形数组,字符数组。

1.1 结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
1.2 结构的声明
struct tag
{
member - list ;
} variable - list ;
例如描述一个学生:
typedef struct Stu
{
char name [ 20 ]; // 名字
int age ; // 年龄
char sex [ 5 ]; // 性别
char id [ 20 ]; // 学号
} Stu ; // 分号不能丢

1.3结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
1.4 结构体变量的定义和初始化
有了结构体类型,那如何定义变量,其实很简单。
struct Point
{
int x ;
int y ;
} p1 ; // 声明类型的同时定义变量 p1------》第一种定义方式,在大括号后面紧跟着输入变量名字
struct Point p2 ; // 定义结构体变量 p2-----》第二种定义方式,联想int a即可
1.5结构体成员的访问

结构体变量访问成员
结构变量的成员是通过点操作符(.)访问的,点操作符接受两个操作数。
例如:上图中的左边部分

结构体指针访问指向变量的成员
有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。
那该如何访问成员。(上上图的右边部分)
如下:
两种方式,
第一种:(*ps)即结构体,再使用.
第二种:直接ps(这是指针)加->
1.6. 结构体传参

上面的 print1 和 print2 函数哪个好些?
答案是:首选 print2 函数。
原因:
函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。
结论:
结构体传参的时候,要传结构体的地址。