#include <stdio.h>
void swap(void *v[], int i, int j)
{
void *tmp;
tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
int main(void)
{
char *s[] = {"one", "two"};
printf("%s, %s\n", s[0], s[1]);
swap(s, 0, 1);
printf("%s, %s\n", s[0], s[1]);
return 0;
}
输出:
one, two
two, one
警告: no compatible pointer casting, need void**, but char
我用这个程序模拟了K&R中的交换函数,演示了函数指针的使用,我的问题是 的转换是否void pointer
总是安全的,或者是否有任何方法可以替换它。