在C++中创建结构的指针

Creating a pointer of a struct in C++

本文关键字:指针 结构 创建 C++      更新时间:2023-10-16

我有一个定义为的结构

typedef struct  BSP_AREA {
    struct BSP_AREA  *otherBspArea;         /* Pointer to itself */
    long             BSPReturnCode;                
    short            sGroupNum;             /* default to 0 */
    char             filler4[6];            /* alignment bytes */
    unsigned char    byCobolWorkArea[20];   /* Cobol Work Area */
    // .... and lots of others fields
} * PBSP_PASS ;

因此,基本上BSP_AREA可以保存对其自身的指针引用,以创建一种链表。

在代码中,我有一个方法createNode(),它返回一个具有方法签名BSP_AREA createNode()BSP_AREA。所以在这个方法中,我只初始化一个BSP_AREA并返回它。现在调用这个方法后,为了将它包含的指针设置为它自己,我正在这样做,但得到了一个错误。

BSP_AREA cobolPassArea2 = createNode(data1);
cobolPassArea->otherBspArea = &cobolPassArea2;

如何初始化指向createNode()返回的BSP_PASS_AREA的指针otherBSP?请不要建议createNode返回指针,而不是具体的BSP_AREA,因为这是要求。

cobolPassArea->otherBspArea = &cobolPassArea2;

应该是

cobolPassArea2.otherBspArea = &cobolPassArea2;

请注意,除了将2添加到左侧的变量名之外,->已更改为.

#include <cstdio>
#include <cstdlib>
typedef struct  BSP_AREA 
{
  struct BSP_AREA  *otherBspArea;   
  int something;
} *PBSP_PASS ;

struct BSP_AREA create()
{
   BSP_AREA x;
   x.something = 5;
   return x;
}

//这个main需要强制编译器接受(在g++上-fpermission(

int main()
{
   BSP_AREA s;
   s.otherBspArea = &(create());
   printf("%d", s.otherBspArea->something);
}

//这个应该很好用。。。但是,这些要求仍然有点奇怪

 int main()
{
   BSP_AREA s, r;
   r = create();
   s.otherBspArea = &r;
   printf("%d", s.otherBspArea->something);
}

这就是你想要的吗?这编译时会出现警告:"正在获取临时地址">