关于结构体定义的一个小问题

ggch   2008-5-31 01:15 楼主
见到有人这样定义结构体
typedef struct
{
    int a;
    int b;
}TestStruct, *TestStruct;
以上结构体定义*TestStruct是不是表示 TestStruct*的意思?如果定义一个结构体变量
TestStruct temp;
这个temp到底是结构体变量呢还是结构体指针?

回复评论 (8)

我正遇到这个问题 也有这个疑问 呵呵 帮顶
点赞  2008-5-31 09:34


  1. typedef struct
  2. {
  3.     int a;
  4.     int b;
  5. }TestStruct, *TestStruct;

lz应该写错了吧,TestStruct, *TestStruct都重名了,我改一下吧!

  1. typedef struct
  2. {
  3.     int a;
  4.     int b;
  5. }TestStruct, *pTestStruct;

此处pTestStruct表示的是 TestStruct *的意思,即pTestStruct tmp;表示TestStruct *tmp;
也就是说tmp是个指向TestStruct的指针。
点赞  2008-5-31 09:39
tmp是一个TestStruct的结构体变量。

如果定义
pTestStruct pTmp = NULL;
那么这个pTmp就是TestStruct结构体的指针变量了。
可以
pTmp = &tmp;
点赞  2008-5-31 16:20
这个纯粹是编程规范问题,暂且不论其正确与否,作为一个合格的程序员角度,还是写得严谨一些比较好,如上面同志写的
将*TestStruct 改为--》*pTestStruct;意图表示指针类型,想法比较好。不过常规情况下,对于指针变了采用pXX打头,但是类型一般不会这么定义,而是在后门加_s等。如*TestStruct_S

引用: 引用 2 楼 maplewasp 的回复:


C/C++ code
typedef struct
{
    int a;
    int b;
}TestStruct, *TestStruct;



lz应该写错了吧,TestStruct, *TestStruct都重名了,我改一下吧!

C/C++ code
typedef struct
{
    int a;
    int b;
}TestStruct, *pTestStruct;



此处pTestStruct表示的是 TestStruct *的意思,即pTestStruct tmp;表示TestStruct *tmp;
也就是说tmp是个指向TestStruct的指针。
点赞  2008-6-1 14:20
学习中
点赞  2011-5-3 17:30
我给一个定义吧,参照资料的:
typedef struct
{
int a;
int b;
}TestStruct,*p;
p=&TestStruct;
这样写比较严格而且易懂,
    意义:通过引用结构体变量的指针变量,引用结构体变量成员
追求卓越,成功就会在不经意间追上你
点赞  2011-5-3 20:33
共同探讨,一起学习
追求卓越,成功就会在不经意间追上你
点赞  2011-5-3 20:37
typedef struct
{
int a;
int b;
}TestStruct,*p;
p=&TestStruct;
在链表里就是很好的应用啊,
追求卓越,成功就会在不经意间追上你
点赞  2011-5-4 11:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复