C语言中结构体用到的typedef

简介: C语言中结构体用到的typedef

1. typedef常规用法

C语言中使用typedef关键字来定义自己习惯的数据类型名称。

例如自定义一个BOOL类型

typedef int BOOL;
#define True 1
//使用自定义的BOOL类型
BOOL flag = True;

2.结构体使用typedef

结构体中使用typedef

C语言中一般的结构体

struct lept_value {
        double n;                          
};
//调用此结构体时
struct lept_value value;  //需要加一个struct

使用typedef

typedef struct {
        double n;                          
}lept_value ;
//调用此结构体时
lept_value value;

typedef将struct这一个无名结构体定义为lept_value 这个名称。

注意:使用typedef时是没有写结构体名的(这样也是可以的)。

3.其他问题

一般的结构体也可以写这样的无名结构体,例如:

struct {
        double n;                          
}lept_value ;

这样的话,该结构体的变量就只能是lept_value ,不能重命名(不推荐这么写,加一个typedef更规范)

关于更多的typedef可以参考链接

4.C语言中结构体更难的用法

结构体中的成员变量使用结构体自身的指针类型,例如最常见的二叉树结构体定义:

最常见的二叉树使用结构体定义时用到

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};

更详细的解释参考链接

5.C++结构体

**C++**中结构体就不需要typedef了

//C++代码
struct lept_value {
        double n;                          
};
//调用此结构体时
lept_value value;
目录
相关文章
|
2月前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
45 10
|
2月前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
2月前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
2月前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
2月前
|
编译器 C语言 C++
C语言结构体
C语言结构体
28 5
|
2月前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
2月前
|
C语言
C语言结构体链式结构之有头单链表
文章提供了一个C语言实现的有头单链表的完整代码,包括创建链表、插入、删除和打印等基本操作。
31 1
|
2月前
|
C语言
初识C语言6——结构体
初识C语言6——结构体
18 3
|
2月前
|
存储 编译器 C语言
【C语言】探索结构体基础知识:简明概要
【C语言】探索结构体基础知识:简明概要
|
2月前
|
编译器 Linux C语言
C语言 之 结构体超详细总结
C语言 之 结构体超详细总结
21 0