C语言中struct和typedef struct的区别
2014-08-23 16:52
471 查看
最常见的一共有三种写法:
************************************************************************************************************************************
关于为什么要用第三种形式(即用typedef这种形式来定义结构体),可以看下面的解释:
其实这是为了简写的缘故,在ANSI C中你声明了一个
struct Piont
{
int x;
int y;
};
你在使用的时候,例如在声明Point的变量时,语法如下:
struct Piont p;
就是说你得带上这个关键字struct。
所以为了书写简单我们用
typedef struct Point
{
int x;
int y;
}Point ,*P;
这样声明了以后在程序中就可以直接使用Point p(表示定义一个Point类型的变量),
P ptr(表示定义一个Point类型的指针)了。
这种用法在ANSI C中经常用到。
但是在ANSI C++中,改进了这种语法,也就是说你声明一个Point变量时,可以不带关键字struct了。
(1)
struct
{ int x; int y; }test1;
(2) struct test {
int x; int y; }test1;
(3) typedef struct test {
int x; int y }text1,text2;
(1) struct{ int x; int y; }test1; 相当于定义了结构体 test1, test1.x 和 test1.y 可以在语句里用了。 (2) struct test {int x; int y; }test1; 定义了结构体 test1, test1.x 和 test1.y 可以在语句里用了。 与 1 比,省写 了 test
(3) typedef struct test {int x; int y; }text1,text2; typedef是取别名的意思
相当于把struct test 这种结构体取别名 叫 test1 或叫 test2
第一个:只定义了一个test1的结构体变量,以后还想定义这种结构体的话,必须重写整个结构体。 第二个:以后想定义结构体的话,可以用struct test test2的方式定义。 第三个:可以直接用text1 test3的形式定义结构体变量。
************************************************************************************************************************************
关于为什么要用第三种形式(即用typedef这种形式来定义结构体),可以看下面的解释:
其实这是为了简写的缘故,在ANSI C中你声明了一个
struct Piont
{
int x;
int y;
};
你在使用的时候,例如在声明Point的变量时,语法如下:
struct Piont p;
就是说你得带上这个关键字struct。
所以为了书写简单我们用
typedef struct Point
{
int x;
int y;
}Point ,*P;
这样声明了以后在程序中就可以直接使用Point p(表示定义一个Point类型的变量),
P ptr(表示定义一个Point类型的指针)了。
这种用法在ANSI C中经常用到。
但是在ANSI C++中,改进了这种语法,也就是说你声明一个Point变量时,可以不带关键字struct了。
相关文章推荐
- typedef struct与struct的区别(C语言中的)
- typedef struct在C语言中的用法那点区别
- C语言中typedef struct与struct的区别
- c语言结构体 和 typedef struct与struct的区别
- C语言struct和typedef struct的区别
- 在C语言中 #define dPS struct s * 与 typedef struct s * tPS; 的 这两种声明的区别
- typedef struct与struct的区别
- typedef struct与struct的区别
- struct 和typedef struct什么区别
- typedef struct和struct的区别
- 关于c语言struct和typedef
- typedef struct 与struct的区别
- C语言中typedef可以出现在struct定义之前
- 我似乎不能成功定义一个链表。我试过 typedef struct { char *item; NODEPTR next; } *NODEPTR; 但是编译器报了错误信息。难道在C语言中一个结构不能包
- 结构体定义struct 与 typedef struct 的区别
- 在c语言中struct的变量中.和->区别
- typedef struct与struct的区别 自学
- 【原创】typedef struct和struct区别
- typedef struct和struct定义结构体的区别
- typedef struct与strcut的区别