-1

私には機能があります

char *func1(char *buffer);

これはバッファを持つ関数です。

char buffer[10]={'\0'};

buffer が関数に渡され、関数から結果を取得し、関数から返されます。

したがって、main 関数が func1 を呼び出すと、

char *result=func1(buffer);

結果を印刷すると、有効な結果が得られます..

 printf("The final result is %s", result);

ただし、このコード行の後

   s = socket(AF_INET,SOCK_DGRAM,0);

結果をもう一度印刷します

   printf("The final result is %s", result);

今回は異なる結果が得られます。

なぜchar * result変更されたのだろうか?

4

1 に答える 1

6

おそらく、あなたbufferが範囲外になったからです。ローカル変数のアドレスを「保持」することはできません。スコープ外に出ると、アドレスは無効になります。

迷惑なコメントのスタックが示すように、コードを見ずにこれに答えるのは不可能です。うまくいけば、これを理解する必要があります。そうしないと、ここで魔法が期待されます。

スコープに関係なく持続するメモリを割り当てるには、 を使用してヒープに割り当てますmalloc()

于 2013-09-30T08:46:16.373 に答える