typedef struct xxx xxx与struct xxx区别 && “->”和“.”访问结构体变量

1、
struct //是C中的结构体的关键词。
如:
stuct node{
int a;
.....
} a;
node 相当于结构体的类型,关键是
其实在C中stuct node 才相当于一个数据类型,如int ,所以在才会给初学者的带来困难,如在定一个变量时,
要用 struct node xxx,而不是 node xxx 这就是关键。
a是struct node类型结构体的变量
注意:在c++中定义结构体类型变量可以不用使用struct,例如可以node xxx

2、
而 typedef // 是自定义数据类型。
如:typedef int zengshu // 把一个数据类型用一个直观的数据类型名代替,增加程序的可移植性。
而且
typedef struct node {
}A;
则是把 struct node 看做一个数据类型(见关键处),不同的是这个结构体类型的定义也放在后面。 而A则是那
个直观的数据类型名,引用的时候更加方便。
 
代码:
1 #include<stdio.h>
2 typedef int INT;
3 int main()
4 {
5     INT a=1;
6     int b=1;
7     printf("%d %d\n",a,b);
8 }

 

3、

 1 typedef struct Trie* TrieNode;
 2 
 3 struct Trie
 4 {
 5     int val;
 6     TrieNode Next[2];
 7     Trie()
 8     {
 9         val = 0;
10         memset(Next,NULL,sizeof(Next));
11     }
12 };
像上面这一段代码,它就把* TrieNode当作struct Trie类型结构体
如果你用TrieNode定义一个变量就相当于定义了一个struct Trie结构体类型的指针变量(注意:是指针变量)
 
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,
那么我们要用指针取出结构体中的数据,就要用到“->”。
 
但是如果你定义了一个struct Trie结构体类型变量,那么你访问它的成员就要通过“.”(这个是小数点)
 
posted @ 2019-12-04 20:06  kongbursi  阅读(891)  评论(0编辑  收藏  举报