c_cpp 在c中设置并获得void *

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 在c中设置并获得void *相关的知识,希望对你有一定的参考价值。

#include "stdio.h"
#include "stdlib.h"

//example for token construction

//data token
typedef struct
{
  int type;
  void* data;
} ConsToken;

//int value
typedef struct
{
  int val;
} IntVal;

typedef struct
{
  int* vals;
} IntSeq;

ConsToken* makeint()
{
  ConsToken* cst = malloc(sizeof(ConsToken));
  cst->type = 1;
  cst->data = malloc(sizeof(int));
  //dereference and cast
  *(int*)cst->data = 4;
  return cst;
}

ConsToken* makeintseq()
{
  ConsToken* cst = malloc(sizeof(ConsToken));
  cst->type = 2;
  cst->data = malloc(sizeof(int) * 3);
  //dereference and cast
  ((int*)cst->data)[0] = 4;
  ((int*)cst->data)[1] = 88;
  return cst;
}

void printfirst(ConsToken* cst)
{
  printf("First value is %d\n", ((int*)cst->data)[0]);
}



int main(void) {
  ConsToken* cst = makeintseq();
  printfirst(cst);
  return 0;
}

以上是关于c_cpp 在c中设置并获得void *的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 使用void函数在C中进行递归

c_cpp 在c中使用void指针数组的一些练习

c_cpp c中的void指针练习

c_cpp 返回void函数

c_cpp 来自void指针的hash数据

c_cpp void *指针的转换问题,这里C和C ++有差别