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

问题描述 投票:0回答:1

我正在学习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 *来使演员表无效?谢谢您的帮助。

casting int void
1个回答
0
投票

我从另一个问题中复制:

对于可变参数函数中的%p格式的参数,强制将void *强制为语言标准。 – Jens 2011年4月17日10:54

Printing pointers in C

© www.soinside.com 2019 - 2024. All rights reserved.