从int *转换为void *。做什么的?

时间:2019-12-13 11:08:08

标签: c casting int void

我正在学习C,并且发现了类似的东西。

#include <stdio.h>

void func(int* y) {
  int x = 1;
  *y = 2;
  y = &x;
}

int main(int argc, char** argv) {
  int x = 3;
  int* x_ptr = &x;
  printf("Value before call: %d\n", x);
  printf("Pointer before function call: %p\n",(void*)x_ptr);
  func(x_ptr);
  printf("Value after call: %d\n", x);
  printf("Pointer after function call: %p\n",(void*)x_ptr);
  return 0;
}

我不知道为什么使用(void *)x_ptr int *强制转换。 为什么要使用int *来使演员表无效? 谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我从另一个问题中复制:

在变体函数中强制将void *的格式%p的参数强制转换为语言标准。 –詹斯(Jens)2011年4月17日上午10:54

Printing pointers in C