指针和带指针的结构
pointer and structure with pointers
这是我的问题:
我有一个结构:
typedef struct Data_Package{
int type;
size_t size;
void* data;
}Data_Package;
我有一个函数:(编辑:Armen Tsirunyan 评论)(这是一个 .C 函数)
void myFunc(Data_Package* ioData) {
ioData->data = malloc(sizeof(double));
(ioData->data)= (double*)62.5
} //that doesn't work
和 main.cpp 我想使用我的功能的地方:
Data_Package* ioData=0;
/* some random operation that change the data,type,... */
myFunc(ioData);
stc::cout << *static_cast<double*>(ioData->data) << std::endl //I want to display te value data (and not the address)
所以我想知道如何在我的函数中更改值数据,然后将其显示在 main.cpp 中(我需要使用指针并且数据是 void* 因为它可能是 double 或 bool 或整数或...)
非常感谢。
Drlk.
1)
ioData->data
属于 void*
类型。您不能取消引用 void 指针。您应该首先将其转换为适当的指针类型,在您的情况下为 double
cout << *static_cast<double*>(ioData->data)
2)
*(ioData->data) = 65.5;
你的指针还没有指向任何有效的东西,你不能取消引用它。你可能想要做的是
ioData->data = new double;
*static_cast<double*>(ioData->data) = 65.5
3)
如您所见,处理 void*
很丑陋。 不直接在结构中存储double
有什么具体原因吗?
这是我的问题: 我有一个结构:
typedef struct Data_Package{
int type;
size_t size;
void* data;
}Data_Package;
我有一个函数:(编辑:Armen Tsirunyan 评论)(这是一个 .C 函数)
void myFunc(Data_Package* ioData) {
ioData->data = malloc(sizeof(double));
(ioData->data)= (double*)62.5
} //that doesn't work
和 main.cpp 我想使用我的功能的地方:
Data_Package* ioData=0;
/* some random operation that change the data,type,... */
myFunc(ioData);
stc::cout << *static_cast<double*>(ioData->data) << std::endl //I want to display te value data (and not the address)
所以我想知道如何在我的函数中更改值数据,然后将其显示在 main.cpp 中(我需要使用指针并且数据是 void* 因为它可能是 double 或 bool 或整数或...)
非常感谢。
Drlk.
1)
ioData->data
属于 void*
类型。您不能取消引用 void 指针。您应该首先将其转换为适当的指针类型,在您的情况下为 double
cout << *static_cast<double*>(ioData->data)
2)
*(ioData->data) = 65.5;
你的指针还没有指向任何有效的东西,你不能取消引用它。你可能想要做的是
ioData->data = new double;
*static_cast<double*>(ioData->data) = 65.5
3)
如您所见,处理 void*
很丑陋。 不直接在结构中存储double
有什么具体原因吗?