以下代码来自编程实践:
int scmp(const void *p1, const void *p2)
{
char *v1, *v2;
v1 = *(char **) p1;
v2 = *(char **) p2;
return strcmp(v1, v2);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么使用这个表达式*(char **) p1.我们可以(char *)p1改用吗?他们之间有什么区别?
谢谢!
不.这(char **)是一个类型转换,并且在转换*之前的一元取消引用指针.如果你只是采取v1 = (char *) p1,那么v1将被设置为等于p1,当你想要的是v1等于char*哪个p1点.