结构指针实现方法

时间:2012-01-18 11:33:52

标签: c pointers structure

struct _Structure{
   int member;
};

结构指针

指向结构的指针

以上2个短语之间是否有任何区别

在我看来,这两个短语代表不同的指针实例化

结构指针

typedef struct _Structure *SP;

SP sp;

指向结构的指针

typedef struct _Structure PS;

PS *ps;

虽然关于_Structure的数据成员访问都有相同的代码片段

sp->member;
    AND
ps->member

如果两个短语都相同,那么请注意!

除此之外,我们还需要

typedef struct _Structure *SP;

SP *sp;

//note: here 'sp' is like double pointer

谢谢, 阿米特

4 个答案:

答案 0 :(得分:1)

如果展开typedefs,则spps都属于struct _Structure *类型。在这方面,他们之间绝对没有区别。

显然,typedefs本身(SPPS)具有不同的语义,因为一个是指针,另一个不是。

在上一个示例中,sp不是类似的双精度型,双指针。双指针在某些上下文中很有用,但使用频率低于单指针。

答案 1 :(得分:0)

两个表达式结构指针结构指针之间没有区别。

spps变量之间没有区别。两者都是结构的指针。使用*或变量声明中的typedef没有任何区别。

答案 2 :(得分:0)

没有区别和更多
    typedef struct _Structure *SP;

SP *sp;

//note: here 'sp' is like double pointer

你不需要这个。如果你这样做,你就会有一个指向指针的指针。

答案 3 :(得分:0)

在我看来,这两个短语都是等同的。两者都需要实现struct。它只是typedef指针的编程首选项,并声明它或声明指向struct的指针。