【问题标题】:Structure pointer implementation method结构体指针实现方法
【发布时间】:2012-01-18 11:33:51
【问题描述】:
struct _Structure{
   int member;
};

结构指针

指向结构的指针

以上2个短语有什么区别

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

结构指针

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

谢谢, 阿米特

【问题讨论】:

  • 你到底在问什么?

标签: c pointers structure


【解决方案1】:

如果您展开 typedefsspps 的类型都是 struct _Structure *。在这方面,它们之间绝对没有区别。

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

在最后一个例子中,sp 不是双精度指针,它双精度指针。双指针在某些情况下很有用,但使用频率低于单指针。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      没有区别,更多

          typedef struct _Structure *SP;
      
      SP *sp;
      
      //note: here 'sp' is like double pointer
      

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-15
          • 1970-01-01
          • 2013-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多