char * Ptr = NULL;
abc( (char *&)Ptr )
と記載した場合、abcに渡されるのは、
Ptr の内容 NULLでしょうか?
Ptr と言うエリアのアドレスでしょうか?
abc( (char *)Ptr )
abc( (char **)&Ptr )
ならば判るのですが・・・・・
強いていえば、「Ptr と言うエリアのアドレス」の方が正解です。
C++流の言い方をすれば、「charポインタへの参照」が渡ります。
「abc( (char **)&Ptr )」と動作は似ています。以下のサンプルコードを追いかけてみると、仕組みがわかると思います。
char *hoge = "abcdefg";
void abc(char *&p)
{
p = hoge;
}
int main(int argc, char **argv)
{
char * Ptr = NULL;
abc( (char *&)Ptr );
puts(Ptr);
return 0;
}
有り難う御座います、理解出来ました
しかし
この使い分けの思想は、何でしょうか?