リテラルのローカル文字列に++のポインタ私は今日怒鳴る、このコードに出くわしたと私はそれが何をするか全くわからない:それは、スタック上のローカル文字列へのポインタに値を設定していますCは
pLogFileCriteria->taskToLogFor[0][0] = *"*";
?したがって、この関数を終了すると、そのメモリはまだ存在しますか?私に魚のように見えます。
リテラルのローカル文字列に++のポインタ私は今日怒鳴る、このコードに出くわしたと私はそれが何をするか全くわからない:それは、スタック上のローカル文字列へのポインタに値を設定していますCは
pLogFileCriteria->taskToLogFor[0][0] = *"*";
?したがって、この関数を終了すると、そのメモリはまだ存在しますか?私に魚のように見えます。
*"*"
のタイプはconst char
です。あなたのコードスニペットは、左側で計算された位置にchar
の値を割り当てています。
これは、同じことをするだろう:ジェームズは彼のコメントで述べたように、それは本当にただ「*」にその文字を設定しています
pLogFileCriteria->taskToLogFor[0][0] = '*';
文字列リテラルは静的持続時間を持ちます。それらはプログラムの存続期間中存在するので、その最初の文字へのポインタを得ることは、関数の後で有効である。しかし、間接演算子に注意してください。最初の文字へのポインタが逆参照され、その文字が生成されます。
を。 –
おそらく正しいでしょう。このコードを書いた人ができるだけ複雑にしたかったようです。 –
@TyrelVanNiekerk彼らがそうしていたのであれば、彼らは非常に頑張っていませんでした。もっと複雑になる可能性があります。 – Barmar