Cは

2017-08-25 1 views
2

リテラルのローカル文字列に++のポインタ私は今日怒鳴る、このコードに出くわしたと私はそれが何をするか全くわからない:それは、スタック上のローカル文字列へのポインタに値を設定していますCは

pLogFileCriteria->taskToLogFor[0][0] = *"*"; 

?したがって、この関数を終了すると、そのメモリはまだ存在しますか?私に魚のように見えます。

答えて

4

*"*"のタイプはconst charです。あなたのコードスニペットは、左側で計算された位置にcharの値を割り当てています。

これは、同じことをするだろう:ジェームズは彼のコメントで述べたように、それは本当にただ「*」にその文字を設定しています

pLogFileCriteria->taskToLogFor[0][0] = '*'; 
+0

おそらく正しいでしょう。このコードを書いた人ができるだけ複雑にしたかったようです。 –

+0

@TyrelVanNiekerk彼らがそうしていたのであれば、彼らは非常に頑張っていませんでした。もっと複雑になる可能性があります。 – Barmar

1

文字列リテラルは静的持続時間を持ちます。それらはプログラムの存続期間中存在するので、その最初の文字へのポインタを得ることは、関数の後で有効である。しかし、間接演算子に注意してください。最初の文字へのポインタが逆参照され、その文字が生成されます。

+0

を。 –