typedef struct LNode* list和struct LNode有什么区别?

typedef struct LNode* list和struct LNode有什么区别?  typedefstructLNode*list表示定义了一个别名list,list代表structLNode*类型的别名,它是一个指针类型。lista,就代表定义了一个structLNode*类型的变量a。  而structLNode代表一个结构体类型。structLNodea代表定义了structLNode类型的变量a。  其详细理解如下所示:C语言  在C…

typedef

  typedef struct LNode * list表示定义了一个别名listlist代表 struct LNode *类型的别名,它是一个指针类型。list a,就是定义了一个struct LNode *类型的变量a

  而struct LNode代表一个结构体类型。struct LNode a代表定义了struct LNode类型的变量a

  其详细理解如下所示:

C语言

  在C语言中:

struct StructName

  表示一个完整的类型名。就像int一样。区别是 struct 是自定义类型,而 int 是内置类型。所以声明的时候写法也是类似的:

int n;
struct StructName dummy; // 类型名 对象名

  但是C语言同样提供一个typedef关键字,可以给已有类型(包括内置和自定义类型)定义别名:

typedef int INT;
typedef struct StructName STRUCTNAME;

  注意看上面的结构,其实和声明变量一样的,只是在前面加一个typedef

  1. 如果没有typedefINT 就是一个int类型变量,STRUCTNAMEstruct StructName 类型变量。

  2. 加了 typedef 则“变量名”就变身“类型名”,而“类型名”代表的类型正是加typedef之前“变量名”对应的类型。

  根据上述逻辑,也可以定义对应的指针类型:

typedef int *PINT;
typedef struct StructName *PSTRUCTNAME;

  定义了这些别名之后,你就可以这样用:

INT n;
STRUCTNAME dummy;
PINT pn;
PSTRUCTNAME pdummy;

  等价于:

int n;
struct StructName dummy;
int *pn;
struct StructName *pdummy;

C++

  C++中引入了类,关键字为 class,它是 struct的增强版本。声明一个类:

class ClassName { 
   
private:
	int n;
public:
	void setValue(int n);
	int getValue();
};

  当声明这个类的对象时,这样书写:

ClassName className;

  而不需要像 struct 一样写成这样:

class ClassName className;

  但是,在C++中,把 class 换成 struct一样可以编译:

struct StructName { 
   
private:
	int n;
public:
	void setValue(int n);
	int getValue();
};

  声明这个struct的对象时,可以这样书写:

StructName structName;

  而不需要像在C语言中一样写成这样:

struct StructName structName;

  但是由于C++兼容绝大多数C语法特性,因此上面这种写法也是正确的。

今天的文章typedef struct LNode* list和struct LNode有什么区别?分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31361.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注