c中结构体的4种定义
来源:互联网 发布:淘宝dsr在线计算 编辑:程序博客网 时间:2024/05/21 09:30
1、常规的标准方式:
1 #include <stdio.h>
2
3 struct student{
4 int age;
5 float score;
6 char sex;
7 };
8
9 int main(int argc, char **argv)
10 {
11 struct student studenta = {
12 30,
13 79.5,
14 'm'
15 };
16
17 printf("年龄: %d, 分数: %.2f 性别:%c\n", studenta.age, studenta.score, studenta.sex);
18
19 return 0;
20 }
编译::!gcc % -o %<
运行::!%<
结果:年龄: 30, 分数: 79.50 性别:m
2、不够标准的方式(声明时初始化):
1 #include <stdio.h>
2
3 struct student{
4 int age;
5 float score;
6 char sex;
7 } studenta = {
8 30,
9 79.5,
10 'm'
11 };
12
13 int main(int argc, char **argv)
14 {
15 printf("年龄: %d, 分数: %.2f 性别:%c\n", studenta.age, studenta.score, studenta.sex);
16
17 return 0;
18 }
编译::!gcc % -o %<
运行::!%<
结果:年龄: 30, 分数: 79.50 性别:m
3、最糟糕的方式(不完全声明时初始化):
1 #include <stdio.h>
2
3 struct {
4 int age;
5 float score;
6 char sex;
7 } studenta = {
8 30,
9 79.5,
10 'm'
11 };
12
13 int main(int argc, char **argv)
14 {
15 printf("年龄: %d, 分数: %.2f 性别:%c\n", studenta.age, studenta.score, studenta.sex);
16
17 return 0;
18 }
编译::!gcc % -o %<
运行::!%<
结果:年龄: 30, 分数: 79.50 性别:m
4、我推崇的方式:
1 #include <stdio.h>
2
3 typedef struct _student{
4 int age;
5 float score;
6 char sex;
7 } Student;
8
9 int main(int argc, char **argv)
10 {
11 Student studenta = {
12 30,
13 79.5,
14 'm'
15 };
16
17 printf("年龄: %d, 分数: %.2f 性别:%c\n", studenta.age, studenta.score, studenta.sex);
18
19 return 0;
20 }
编译::!gcc % -o %<
运行::!%<
结果:年龄: 30, 分数: 79.50 性别:m
这几种方式中,第四种的优点:
1.使用了类型定义,typedef
2.遵照了结构体的命名约定,就是在student前加_,使用_student
3.使用首字母大写式的命名,使得使用者明白这是一种类型,而不是普通变量
4.为将来的使用创建了良好的基础,后期声明无需频繁使用struct表明是结构体,只需要使用Student即可,既便于使用和理解,又能有效的完成封装与信息隐藏。
因此,个人更推崇第四种方式。
读人民邮电出版社的《深入理解C指针》原著:Richard Reese 陈晓亮译,p126有感,于九江学院通信实训中心机房 2015年 3月30日
- c中结构体的4种定义
- C语言中结构体的三种定义方式
- C语言中定义结构体的几种方法
- C语言中定义结构体的几种方法
- objective-c中c结构体的定义
- C语言中结构体指针的定义和引用
- C与C++中定义结构体的不同方式
- C与C++中定义结构体的不同方式
- C语言中结构体指针的定义和引用
- C与C++中定义结构体的不同方式
- C语言中结构体指针的定义和引用
- C语言中结构体定义的方式
- C与C++中定义结构体的不同方式
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- C语言中结构体指针的定义和引用
- 进阶_ExpandListView新建_150330
- Swift 全功能的绘图板开发
- centos 7 安装和配置vncserver
- getParameter()和getAttribute()的区别
- 24
- c中结构体的4种定义
- android4.4 NetworkController 详解
- No suitable driver found for jdbc_我的解决方法
- 25
- 使用 U 盘安装 RedHat 6.5 并且布置 j2ee 环境
- 26
- 27
- char *和char[]的初始化
- Java 理论与实践: 正确使用 Volatile 变量