结构体指针实现方法

3
struct _Structure{
   int member;
};

结构体指针

指向结构体的指针

上述两个短语有什么区别吗?

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

结构体指针

typedef struct _Structure *SP;

SP sp;

结构体指针

typedef struct _Structure PS;

PS *ps;

当涉及读取_Structure的数据成员时,这两个代码片段是相同的

sp->member;
    AND
ps->member

如果两个短语相同,则为OK NOPS!!!

除此之外,我们为什么需要

typedef struct _Structure *SP;

SP *sp;

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

感谢您的来信,Amit。

1
你实际上在问什么? - Daniel Kamil Kozar
4个回答

1

如果您展开typedefs,那么spps都是struct _Structure *类型。在这方面,它们之间绝对没有任何区别。

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

在最后一个例子中,sp不是像double一样,它是一个double指针。双重指针在某些情况下很有用,但使用频率比单指针低。


0

在编程中,“结构体指针”和“指向结构体的指针”这两个表达式没有区别。

而且,spps变量之间也没有区别。它们都是指向结构体的指针。在typedef或变量声明中使用*没有任何区别。


0
在我看来,这两个短语是等价的。都需要实现结构体。只是编程偏好使用 typedef 声明一个指针或者声明一个结构体指针。

0

没有区别,更重要的是

    typedef struct _Structure *SP;

SP *sp;

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

你不需要这样做。如果你这样做,你只会得到一个指向指针的指针,就像你所说的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接