こんにちは、次のコードは移植可能ですか?Cで値渡し
私はちょうど値によってポインタを渡すことができます変更それは呼び出し元で!
void foo(void *p)
{
void **pp = (void**)p;
*pp = "hahaha";
}
int main(int argc,char **argv)
{
void *p = NULL;
p = &p;
printf("%p\n",p);
foo(p);
printf("%s\n",(char *)p); // hahaha
printf("%p\n",p);
return 0;
}
ここには非常に人気があるコメントがあります。あなたがそれを行うことができるからといって、必ずしもあなたがすべきことではありません! – Nim
あなたは正しい - それは*まだ*(いつものように)pass/call-by-valueだ。答えを参照してください。 –