数据结构学习(结构体复习)

简介: 结构体 为什么会出现结构体 为了表示一些复杂的数据,而普通的基本类型变量无法满足要求 什么叫做结构体 结构体是用户根据实际需要自己定义的复合数据类型 如何使用结构体 两种方式: struct Student st = {1000,"zhangxu",20}; struct Student *pst = &st; 1.

结构体

为什么会出现结构体

为了表示一些复杂的数据,而普通的基本类型变量无法满足要求

什么叫做结构体

结构体是用户根据实际需要自己定义的复合数据类型

如何使用结构体

两种方式:

struct Student st = {1000,"zhangxu",20};

struct Student *pst = &st;

1.

St.sid

2.

Pst->sid

Pst所指向的结构体变量中的sid这个成员

注意事项

1.结构体变量不能加减乘除,但可以相互赋值

2.普通结构体变量和结构体指针变量作为函数传参的问题

#include<stdio.h>
#include<string.h>
struct Student
{
 int sid;
 char name[200];
 int age;
};//分号不能省
int main(void)
{
 struct Student st = {1000,"zhangxu",20};
 printf("%d   %s   %d\n",st.sid,st.name,st.age);
 st.sid = 99;
 //st.name = "lisi";//error
 strcpy(st.name,"lisi");
 st.age = 22;
 printf("%d   %s   %d\n",st.sid,st.name,st.age);
 return 0;
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include<stdio.h>
struct Student
{
 int sid;
 char name[200];
 int age;
};
int main(void)
{
 struct Student st = {1000,"zhangxu",20};
 //st.sid = 99;//第一种方式
 struct Student *pst;
 pst = &st;
 pst->sid = 99;//第二种方式 pst->sid等价于(*pst).sid,而(*pst).sid等价于 st.sid,所以 pst->sid等价于st.sid
 return 0;
}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include<stdio.h>
struct Student
{
 int sid;
 char name[200];
 int age;
};
int f(struct Student * pst);
int g(struct Student * st);
int main(void)
{
 struct Student st;//和 int i一样
 int i;//内存给分配空间了
 f(&st);
 g(&st);

 return 0;
}
int f(struct Student * pst)
{
 (*pst).sid = 99;
 strcpy(pst->name,"lisi");
 pst->age = 22;
}
int g(struct Student *st)
{
 printf("%d   %s   %d\n",st->sid,st->name,st->age);
}

 

目录
相关文章
|
2天前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
10 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
2天前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
2天前
|
存储 算法 数据管理
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
这篇文章通过需求分析、代码实现和测试验证,详细介绍了二叉排序树的创建、遍历和删除操作,以及二叉平衡树(AVL)的自平衡特性和单旋转操作,旨在提高树结构在数据管理中的效率和性能。
10 0
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
|
2天前
|
算法 搜索推荐
数据结构与算法学习十八:堆排序
这篇文章介绍了堆排序是一种通过构建堆数据结构来实现的高效排序算法,具有平均和最坏时间复杂度为O(nlogn)的特点。
15 0
数据结构与算法学习十八:堆排序
|
2天前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
|
2天前
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
数据结构与算法学习十五:哈希表
|
2天前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
数据结构与算法学习十四:常用排序算法总结和对比
|
2天前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
|
2天前
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。