ホームページ  >  記事  >  バックエンド開発  >  PHPリファレンスに関する質問

PHPリファレンスに関する質問

WBOY
WBOYオリジナル
2016-08-31 08:54:511046ブラウズ

//参照によるリターン

リーリー

2 番目の関数は、割り当てられた変数 $cr = 4 の値を変更しますが、関数の戻り値が変わらないのはなぜですか?

返信内容:

//参照によるリターン

リーリー

2 番目の関数は、割り当てられた変数 $cr = 4 の値を変更しますが、関数の戻り値が変わらないのはなぜですか?

最初の関数のコードは実際には次のようになります。$bは静的変数であるため、関数の実行後に解放されません。

リーリー

ただし、2 番目の関数では、$a はローカル変数です。関数の実行後、この変数のメモリは解放されます。

まず、呼び出した関数が参照を返すかどうかを明確にする必要があります。

関数名の前に & を付ける必要があり、代入ステートメントの前に & を付ける必要があります したがって、質問 は実際には参照ではありません。 $cr1 = cuitReturn();

質問者が言ったことに戻りますが、なぜ戻り値が変わらないのでしょうか? それは、関数 cuitReturn$a がローカル変数であり、静的ではないためです。 function returns その後解放されます。 $cr = &cuitReturn(); はローカル変数を参照するのと同じです

これを C++ に置くと大変なことになります…つまりポインタです。不明なメモリを指します。cuitReturn 里面的 $a 是一个局部变量,而且不是静态的,所以,函数返回之后就被释放了,$cr = &cuitReturn();相当于是引用了一个局部变量, 这要是放在C++里面是会出大事的...这意味着指针指向未知内存, 但是 PHP 引擎应该是有处理的, 所以 $rc 对于 $a しかし、PHP エンジンはそれを処理する必要があるため、

への $rc の参照は無効です🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。