gpt4 book ai didi

c - 我们什么时候在 C 中声明 ADT 的指针,为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:31 25 4
gpt4 key购买 nike

通常当我们在 C 中使用关键字“struct”创建一个新结构时,我们可能会在源文件以外的其他文件中使用它,我们使用关键字“typedef”来定义指向该结构的指针;

typedef struct struct_name* StructName; // for exmaple

为什么我们不简单地这样定义它;

typedef struct struct_name StructName; // this time i am not using pointers

使用这两种方式有什么不同吗?

最佳答案

反对指针 typedef 的一般论点是,如果你使用这种形式

typedef struct struct_name *ADT;

不能声明不修改数据结构的函数:

void some_function(const ADT bar);

表示 struct struct_name *const bar 即指针不能指向不同的值,但指向的结构可以修改。如果你想这样做,那么你需要为常量类型设置另一个 typedef:

typedef const struct struct_name *ConstADT;

void some_function(ConstADT bar);

并且很难意识到它们是同一类型但具有不同的资格。然后你很快就会有各种各样的垃圾类型定义,比如 LPCVOIDPTRCSTR,每个人都会头疼。

关于c - 我们什么时候在 C 中声明 ADT 的指针,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57145272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com