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 函数。 原因: 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。 结论: 结构体传参的时候,要传结构体的地址。

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 函数。 原因: 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。 结论: 结构体传参的时候,要传结构体的地址。