将void指针作为fucntion参数传递给achive新地址(char,int)

时间:2017-03-09 17:14:46

标签: c pointers

内存中有数据,我想用它的指针读取它。是否允许通过将此指针传递给function来修改指向char,int等的void指针。 我的意思是:

struct DataContainer {
  char* one;
  int* two;
};

void GetDataPointer(char var, void* data_p)
{
  switch(var) {
   case 1:
     data_p = (void*)DataContainer.one;
     break;
   case 2:
     data_p = (void*)DataContainer.two;
     break;
}

void main(void)
{
  char* example;
  GetDataPointer(1, (void*)example);
}

在功能GetDataPointer中,我可以看到data_p获取与Datacontainer.one相同的地址,但main() example的地址保持不变。

1 个答案:

答案 0 :(得分:0)

您需要将指针传递给指针。

GetDataPointer(1, (char **) &example);

在函数声明中,您将把它放在:

char **data_p

当你设置指针的值时:

*data_p = something;