#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の swap 関数をシミュレートし、関数ポインターの使用方法を示しました。私の質問は、のキャストvoid pointer
が常に安全かどうか、またはそれを置き換える方法があるかどうかです。