ダブルポインタがよくわかりません・・・

---------------------------------------------
void func(char *, char **);
main()
{
char *namber[] = {"one", "two", "three"};
char *string = "hoge";
printf("%s:%s\n", string, *number);
func(string, *number);
}

void func(char *string, char **namber)
{
printf("%s:%s\n",string, *number);
}
---------------------------------------------
上記をコンパイルするとfunc関数の第2パラメータのところで
エラーがでます。*numberのアスタリスクをはずして
func(string, number);
とすれば問題なくコンパイルが通り正しい実行結果も得られるのですが
なぜ*をつけては駄目なのでしょうか?printfの場合は逆につけないと
上手く動作しません・・・