【发布时间】:2019-10-01 04:05:15
【问题描述】:
是否经常做以下事情:
void *x = (void *) "one";
void *y = (void *) 2;
void *z = (void *) NULL;
代替:
char * x = "one";
int y = 2;
我问这个的原因是能够调用一个可以接受多种类型的函数。例如,各种元素的 concat 可以在 javascript 中使用。在某种程度上,使用(void *) 似乎只是表示“任何类型”的一种简单方式。
【问题讨论】:
-
不,它会阻止类型检查,最好避免使用,并且不能用于避免应用严格别名规则。它是有效的,只是不聪明。
-
实际上,它正在创建指向内存单元 0x2 的指针,而不是第二行中的常量
2。