typedef 与结构体struct
文章目录
- 1 struct
- 1.1 定义结构体
- 1.2 定义结构体 数组与指针
- 1.2.1 数组
- 1.2.2 指针
- 2 typedef
- 2.1 定义变量
- 2.2 定义结构体
- 2.3 定义结构体 数组与指针
- 2.3.1 数组
- 2.3.2 指针
- 3 成员访问小结
1 struct
struct 结构名{ 类型 变量名; 类型 变量名; ... } 结构变量;
1.1 定义结构体
(1)
struct Node{ int a;
}student;
// 访问
student.a = 10;
(2)
struct Node{...
};
struct Node student;
// 访问
student.a = 10;
(3)
struct { ...
}student;
// 访问
student.a = 10;
注:
- 只能用结构名(Node)创建实例,不能用 结构变量(student) 创建
如,struct Node stu1; //允许
,但struct student stu1; //不允许
- (1)和(2)等价,(3)为 无名结构(一般在函数内部)
1.2 定义结构体 数组与指针
1.2.1 数组
(1)
struct Node{ ...
}student[100];
// 访问
student[0].a = 10;
(2)
struct Node{...
};
struct Node student[100];
// 访问
student[0].a = 10;
(3)
struct { ...
}student[100];
// 访问
student[0].a = 10;
1.2.2 指针
struct Node{ int a;
}*student, *students;
// 访问
student = (Node *)malloc(sizeof(Node));
student->a = 10;
(*student).a = 10;
students = (Node *)malloc(sizeof(Node)*100); //指针数组
students[0]->a = 10;
(*students)[0].a = 10;
(2)
struct Node{...
};
struct Node *student, *students;
// 访问
student = (Node *)malloc(sizeof(Node));
student->a = 10;
(*student).a = 10;
students = (Node *)malloc(sizeof(Node)*100); //指针数组
students[0]->a = 10;
(*students)[0].a = 10;
2 typedef
2.1 定义变量
typedef int MY_INT; // 给int起别名:MY_INTint main(){MY_INT a = 100; //相当于 int a = 100;return 0;
}
2.2 定义结构体
(1)
typedef struct Node{ //Node可省略变为(2)int a;
}Student; // 给 Node 起别名 Student
//定义
Student stu; // 第1种
stu.a = 10;
Node stu2; // 第2种
stu2.a = 10;
(2)
typedef struct{ int a;
}Student;
//定义
Student stu;
stu.a = 10;
(3)
typedef struct Node{ // 由于成员中有struct Node *,因此 Node 不可省略int a;struct Node *deskmate;
}Student;
2.3 定义结构体 数组与指针
2.3.1 数组
typedef struct Node{int a;
}Student, Stus[100];
//定义
Node stus1[100]; // 第1种
stus1[0].a = 10;
Student stus2[100]; // 第2种
stus2[0].a = 10;
Stus stus3; // 第3种
stus3[0].a = 10;
2.3.2 指针
typedef struct Node{ int a;
}Student, *PStudent;
//定义
Student *pstu1; // 第1种
pstu1 = (Student *)malloc(sizeof(Student)); //或 pstu1 = (Node *)malloc(sizeof(Node));
pstu1->a = 10;
(*pstu1).a = 10;PStudent pstu2; // 第2种,PStudent pstu; 等价 Student *stu;
pstu2 = (Student *)malloc(sizeof(Student)); //或 pstu2 = (Node *)malloc(sizeof(Node));
pstu2->a = 10;
(*pstu2).a = 10;
3 成员访问小结
类型 | 定义变量 | 访问成员 |
---|---|---|
结构型(定义1个) | Student stu; | stu.a |
结构型(定义n个) | Student stu[n]; | stu[i].a |
指针型(定义1个) |
Student *stu; stu = (Student *)malloc(sizeof(Student)); |
stu->a 或 (*stu).a |
指针型(定义n个) |
Student *stu; stu = (Student *)malloc(n * sizeof(Student)); |
stu[i]->a 或 (*stu)[i].a |
typedef 与结构体struct相关推荐
- C++自学12:结构体(struct/typedef)
定义结构体需要使用关键字struct修饰 struct MyStruct1 { int a;int c; }; (重要)下面声明了4个东西,分别是 1.结构体User 2.User指针类型的指针p1 ...
- C语言中struct typedef 以及结构体指针用法
struct .typedef以及结构体指针用法 typedef用法 结构体指针用法 结构体初始化 typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别 ...
- C语言——结构体struct与typedef的使用
我们常常在某些C语言代码中看到有时候typedef关键字和struct一起连用定义结构体,有时候只用struct关键字直接定义结构体,在此记录两者的一些用法,给自己做一个笔记,希望对大家也有所帮助.如 ...
- c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)
1. typedef 最简单使用 [c-sharp] view plain copy typedef long byte_4; // 给已知数据类型long起个新名字,叫byte_4 你可以在任何需要 ...
- linux sock结构体,struct socket结构体详解
在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题. 由这个图可知,内核中的进程可以通过使用struct ...
- 获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf
http://blog.csdn.net/windeal3203/article/details/39320605 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq ...
- C++之指针探究(十八):typedef结合结构体指针
typedef结合结构体指针 例: 运行结果: 附上例代码 //小问学编程 #include <stdio.h>//我们一次定义了2个类型 //第一个是结构体类型,有2个名字:struct ...
- 【结构体Struct——简单使用】
文章目录 结构体 定义结构体 访问结构体成员 结构体指针 结构体作为函数参数 结构体数组 总结 结构体 在C++中,struct是一种自定义的数据类型,用于将不同类型的变量组合在一起,形成一个逻辑上的 ...
- C语言结构体struct详解与实例
目录 1.定义 2.应用 2.1初始化 2.2使用 3.结构体对齐规则与存储 1.定义 C语言中结构体(struct关键字定义)是一种自定义数据类型.通过结构体的定义可以将多种不同类型数据形成一个组合 ...
- C语言中结构体struct的用法
点击蓝字 关注我们 定义结构体变量 下面举一个例子来说明怎样定义结构体变量. struct string { char name[8]; int age; char sex[2]; char depa ...
最新文章
- Android View体系(一)视图坐标系
- SecureCRT 或者 超级终端 始终无法ping通主机
- 构建SpringBoot第一个Demo
- android相册管理,Piktures - 最优雅的相册管理 - Android 应用 - 【最美应用】
- 故障error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “
- 能利用计算机来模拟某种真实的实验现象,自然现象或社会现象的课件是,幼儿园课件制作教案...
- 波兰表达式(前序表达式)的计算(栈)
- 罗永浩抖音直播首秀:3小时1.1亿;微软曝三屏折叠机专利;Linux Mint 20仅提供64位版本 | 极客头条...
- C#判断检测网络是否连接
- Learning Efficient Single-stage Pedestrian Detectors by Asymptotic Localization Fitting行人检测ECCV2018
- mac1200r 服务器无响应,水星路由器mac1200r桥接不成功怎么办
- 技能 |【点滴知识】如何在跟催任务时使用EXCEL进度条?
- 艰难的抉择,阿里“小前台、大中台”的解读
- HttpClient 调用耗时长服务问题记录和处理方案
- 卷帘相机原理和卷帘门补偿(其中循环的理解)
- Think Pad笔记本分区解决思路及方法
- Springboot整合RocketMQ遇到的问题
- eclipse新建C/C++项目
- V90 PN 伺服驱动器的一键自动优化功能_方法示例
- source和./的区别