2017-02-07 8 views

答えて

1

constを除き、すべての変数の値はCで変更可能です。

yは不変であると言うことができますか?

短い答え:いいえ

+0

静的に初期化された文字列は不変です。したがって、あなたの最後のステートメントは正しくありません。 – DyZ

+0

@DYZ私はその行を削除しました。 – rsp

+0

@ DYZ--文字列リテラルは不変ですが、静的に初期化された文字列、つまり静的記憶期間で初期化された文字列は変更可能です。たとえば、 'char mutable_string [] ="これは変更可能です; "ファイルスコープでは変更可能です。 –

0

したがって、yは不変であると言えますか?

私たちはできますが、私たちは、あなたがこれだけを見つけるために少しを試してみる必要があり

:-)間違っていると思います。 y = 42は、yではなく、であることを示唆していますが、新しいという値が作成され、その値がyであり、古い値は変更されていない可能性があります。

これは、次のようなコードで割り引かすることができます:あなたは、むしろ、アクセスyに使用両方方法はyの基本となる値そのものが変更されたことを示す、新しい値を取得することがわかります

int y = 7;  // we have a y 
int *pY = &y;  // and a pointer to it 
y = 42;   // change y 
printf ("%d %d\n", y, *pY); 

新しい値が作成され、yが何らかの形でそれにリダイレクトされているよりも。

C自体にはにはという不変のデータがありません。これは実際にはconstというキーワードです。しかし、それはPythonの不変性の概念とはかなり異なっています。

関連する問題