在C++中创建结构的指针
Creating a pointer of a struct in C++
我有一个定义为的结构
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);
}
这就是你想要的吗?这编译时会出现警告:"正在获取临时地址">
相关文章:
- 如何在 C# 中映射双 C 结构指针?
- 指针或结构的矢量
- MSVC将仅移动结构参数解释为指针
- 如何访问指针结构的成员变量?
- 如何将变量从变量传递到指针结构对象
- 如何在函数中检索指针结构
- C :变量的点地址至指针结构成员的地址
- C++指针结构不会被删除
- 初始化指针结构 - 内存中的外观
- C++指针结构和多线程
- c++中指针结构的运算符重载
- 为什么我不能转发声明指针结构?
- C# 如何定义新的指针结构
- 如何处理大型指针结构
- 我怎么能写一个函数的定义在模板类中声明返回指针结构对象
- 我如何编程指针结构或类变量在c++
- 具有指针结构的类所需的析构函数
- 为什么在非指针结构上进行类型转换会出现语法错误
- 语法:做binary_search (STL)排序向量的指针结构
- /a.检测到Glibc.out: munmap_chunk():无效指针- c++结构体的动态数组