初始结构体 基础相关知识
2021-05-15 21:24
645 查看
初始结构体 基础相关知识
结构的声明
列如:
//struct - 结构体关键字 Stu - 结构体标签 struct Stu - 结构体类型 struct Stu { //成员变量 char name[20]; short age; char tele[12]; char sex[5]; } s1,s2,s3; //分号不能丢 s1,s2,s3是三个全局的结构体变量 //尽量少使用全局变量 int main() { struct Stu s; // struct Stu - 是类型 ,s - 是变量 return 0; }
typedef的用法
typedef struct Stu //typedef 类型重命名 { //成员变量 char name[20]; short age; char tele[12]; char sex[5]; }Stu; //类型 int main() { Stu s1 = {"张三", 20, "183289432", "男"};//初始化 struct Stu s2 = {"李四", 20, "183223432", "保密"}; // struct Stu - 是类型 ,s - 是局部变量 return 0; }
嵌套结构体
struct S { int a; char c; char arr[20]; double d; }; struct T { char ch[10]; struct S s; //嵌套 char* pc; }; int main() { char arr[] = "hello birt\n"; struct T t = {"hehe", {100,'w',"hello world",3.14},arr}; //用 . 来访问结构体成员 printf("%s\n",t.ch); //打印hehe printf("%lf\n",t.s.d);//打印3.140000(小数点后默认六位) return 0; }
结构体传参 :最好传结构体的地址
typedef struct Stu //typedef 类型重命名 { //成员变量 char name[20]; short age; char tele[12]; char sex[5]; }Stu; //类型 void Print1(Stu tmp) { printf("name: %s\n",tmp.name); printf("age: %d\n",tmp.age); printf("tele: %s\n",tmp.tele); printf("sex: %s\n",tmp.sex); } void Print2(Stu* ps) { printf("name: %s\n",ps->name); printf("age: %d\n",ps->age); printf("tele: %s\n",ps->tele); printf("sex: %s\n",ps->sex); } int main() { Stu s = {"张三", 20, "183289432", "男"};//初始化 //打印结构体数据 //两种打印情况对比 Print1(s); //压栈的系统开销比较大 效率底 Print2(&s); //只传一个地址系统开销比较小 效率高 return 0; }
关于什么是压栈
涉及知识:
1.内存分为 三个空间:栈区、堆区、静态区
2.栈区存放: 局部变量、函数的形式参数、函数调用也开辟空间
3.堆区存放: 动态内存分配、 malloc/free、realloc、calloc
4.静态区存放: 全局变量、静态变量
数据结构
----线性数据结构
顺序表
链表
栈 :先进后出,后进的先出
队列
----树形数据结构
二叉树
----图
int Add(int x, int y) { int z = 0; z = x + y; return z; } int main() { int a = 10; int b = 20; int ret = 0; //插入一个元素:压栈 //删除一个元素:出栈 ret = Add(a,b); //传过去的a,b, 就叫压栈操作 return 0; }
相关文章推荐
- 对C语言结构体知识点的学习以及复习相关基础知识
- C语言基础知识之(十二):结构体作为函数的参数(结构体变量、结构体数组)
- python基础知识1---python相关介绍
- Java 并发编程之美-线程相关的基础知识
- python基础知识点相关(间断更新)
- Java相关的基础知识
- IP地址相关的基础知识以及IP相关术语的解释
- css基础浮动相关知识
- WinCE 的发展史及相关基础知识
- Linux Socket 摘要(二)(基于TCP的C/S基本实现,相关基础知识,非阻塞select)
- Redis哨兵架构的相关基础知识的讲解
- JAVA相关基础知识(5)
- js-ajax相关基础知识整理
- C++相关基础知识(转贴)
- 电商之梳理springmvc相关知识---开发基础框架
- linux系统编程之基础必备(三):文件描述符file descriptor与inode的相关知识
- 硬件相关基础知识0(EEPROM和flash的区别)
- Linux相关基础知识记录
- 相关VB.NET文件对象基础知识讲解
- Java 基础知识相关好文章