[解決済み] エラー: 読み取り専用位置の割り当て
2022-02-08 23:12:23
質問
このプログラムをコンパイルすると、次のようなエラーが出ます。
example4.c: In function ‘h’:
example4.c:36: error: assignment of read-only location
example4.c:37: error: assignment of read-only location
ポインターに関係すると思うのですが、どうすれば直るのでしょうか?
コード
#include <stdio.h>
#include <string.h>
#include "example4.h"
int main()
{
Record value , *ptr;
ptr = &value;
value.x = 1;
strcpy(value.s, "XYZ");
f(ptr);
printf("\nValue of x %d", ptr -> x);
printf("\nValue of s %s", ptr->s);
return 0;
}
void f(Record *r)
{
r->x *= 10;
(*r).s[0] = 'A';
}
void g(Record r)
{
r.x *= 100;
r.s[0] = 'B';
}
void h(const Record r)
{
r.x *= 1000;
r.s[0] = 'C';
}
解決方法は?
関数内で
h
を宣言しています。
r
は、定数
Record
-- を変更することはできません。
r
またはそのどの部分であっても、それは不変です。
読み方には右左のルールを適用する。
を渡していることにも注意してください。
コピー
の
r
を関数
h()
-- もし、あなたが
r
の場合、定数でないポインタを渡す必要があります。
void h( Record* r)
{
r->x *= 1000;
r->s[0] = 'C';
}
関連
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】strcmpが機能しない
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み] Rが解決できない - Androidエラー
-
[解決済み] Cannot find symbol" や "Cannot resolve symbol" というエラーはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。