C言語で関数の引数は別アドレスが用意される模様。
伝えたいこと
すっごい例コードが悪いですが、下記のmain関数内のcpとtest関数内のcpは違うアドレスに確保される模様。要は参照渡し的なことをしたかったけど、そんなことになってませんよ。っていうお話。
void test(char* cp) { printf("2:%p \n", &cp); } int main() { char* cp = NULL; printf("1:%p \n", &cp); test(cp); return 1; }
あくまで、cpは「ポインタ変数」なので、スコープが違うと別変数扱い(別アドレス)になります。main関数でcpのアドレスを渡してるのですから、と勘違いしていました。
結局main関数で渡しているのもポインタ変数のアドレスなので、それを渡しても…って雰囲気ですし。そもそも変数への代入と値のコピーがごっちゃになってるので、こういう間違いに繋がります。
正直なところ
慣れる気がしない。