2. struct A 和 typedef struct A

2. struct A 和 typedef struct A

2.1 struct A

struct A{}定义一个名为struct A的结构体.
下例定义了struct A同时,声明了两个变量(注意:不是类型别名)varA, pA.

struct A{
	int num;
	struct A *next;
}varA, *pA; // 声明了struct A类型的变量varA, 指针变量pA;

int main(){
	struct A a, b;
	a.num = 10;
	b.num = 20;
	// pA = a 不对,a并不像函数名或数组名那样来表地址;
	// 相反,a就是普通变量名.
	pA = &a;
	pA->num; //pA为指针变量,所以 ->,否则为"."
}

2.2 typedef struct A

typedef struct A{} a, *a用来为struct A类型起别名(注意:不是起变量名).
a是类型名,*a是指向struct A类型的指针类型名.
e.g.

// typedef 为 struct B 类型声明了两个别名:
// BNode struct B 类型别名;
// Head 能用来声明指向struct B对象的指针类.
#include<iostream>
using namespace std;

typedef struct B{
	int b;
	float f;
}BNode, *Head;

typedef int INT;

int main(){
	INT i = 3;

	BNode bn;
	Head head; //head是指针变量,不需*就可定义,因Head已是指针类型
	head = &bn;
	bn.b = 100;
	head->b = 200; //bn和head在修改同一个对象的b域
	cout << "head->b : " << head->b << endl;
	cout << "bn.b : " << bn.b << endl;
}
原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7357107.html