美文网首页
新知篇之三-- 结构体

新知篇之三-- 结构体

作者: 好雨知时节浩宇 | 来源:发表于2018-10-27 17:42 被阅读16次

为什么会写这篇文章,在看一篇关于内存的博客时,作者搬出了XNU的源码,发现其中有一处关于结构体的定义使用的挺简洁巧妙,顿时觉得应该总结下这块知识,虽然简单,但并不是每个人都能清晰的讲明白。
1、结构体定义:

1.只有结构体的定义

struct People {
    char name[20];
    char sex;
    int age;
};

2、同时创建该结构体变量的定义方式:
struct Student {
    char name[20];
    char class;
    int age;
} student1;
这种方式等价于:
struct Student {
    char name[20];
    char class;
    int age;
};
struct Student student1; //使用struct Student来定义结构体变量

这种写法每次定义结构体变量是都需要通过:
struct Student 结构体变量;
**需要注意:没有struct,只有Student student1是错误的,struct 和 Student共同组成了结构体类型。**

3、使用typedef
typedef struct Student {
    char name[20];
    char class;
    int age;
} XXStudents;

这种方式定义的结构体,在声明结构体变量时,我们只需要使用如下方式:
XXStudents stu1;
没有typedef就需要使用 struct XXStudents stu1;方式。

通过使用typedef以此来声明struct Student这个结构体的别名为:XXStudents。

4、typedef struct tagNode
{
char* pItem;
pNode* pNext;
}pNode;

这种方式定义就会报错,我们分析下:
1、C语言中允许结构体中使用只想自己的指针。
2、这里报错的原因是typedef,使用了typedef后,pNode就是一个别名,在新结构体建立时,发现有一个类型为pNode,但是pNode是表示类型的新名字,在类型本身还没有建立完成的时候,这个类型的新名字也还不存在。

这里也附上修改方式:(下面这种方式为推荐写法:)

struct tagNode {
char* pItem;
struct tagNode* pNext;
};

typedef struct tagNode* pNode;

鉴于这部分都是小的语法知识,排版不是很优雅,大家以内容为主,有问题欢迎指正。

关于typedef的使用,请参阅下篇文章。

相关文章

  • 新知篇之三-- 结构体

    为什么会写这篇文章,在看一篇关于内存的博客时,作者搬出了XNU的源码,发现其中有一处关于结构体的定义使用的挺简洁巧...

  • 2017年9月18日学习总结

    一、新知识点掌握摘要 (1)结构体类型的定义 Struct 结构体名{ 成员表列} (2)结构体类型变量的定义 S...

  • 大话结构体之八:小个头也有大智慧---C语言Struct中的函数

    By Long Luo 在系列之三大话结构体之三:借我一双慧眼吧,让我把C++中Class(类)和Struct(结...

  • 结构体和类(一)

    结构体和类模块分两篇笔记来学习: 第一篇: 结构体和类的区别 分析类和结构体可变性 以一个具体的例子来学习使用类和...

  • 结构体和类(二)

    结构体和类模块分两篇笔记来学习: 第一篇: 结构体和类的区别 分析类和结构体可变性 以一个具体的例子来学习使用类和...

  • Swift基础2

    本文接着上一篇,对Swift的结构体、类、协议、扩展、枚举以及闭包做一个简单的介绍。 七、结构体 Swift的结构...

  • FFmpeg学习之三(常用结构体)

    @TOC 常用结构体 FFMPEG中结构体很多。最关键的结构体可以分成以下几类: 解协议(http,rtsp,rt...

  • 大话结构体之六:无即是有,没有成员变量的Struct(结构体)

    By Long Luo 在上一篇大话结构体之五:以空间换时间,Struct(结构体)中的成员对齐之道(下)[htt...

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

网友评论

      本文标题:新知篇之三-- 结构体

      本文链接:https://www.haomeiwen.com/subject/ftuqtqtx.html