A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> まず、その状態は「コンパイルは出来る」とは言えません。
> 警告(warning)ではなくエラー(error)が出るはずです。
C++ ならそうですね。下の代入二つでconst_castが必要です。
例えばVC7.1なら「error C2440: '=' : 'const char *' から 'char *' に変換できません。」等と言われます。
でも、Cなら通るので、おそらく質問者さんはC言語なのだと思います。
同VC7.1では「warning C4090: '=' : 異なる 'const' 修飾子です。」といわれます。
>質問者さん
Cの時代は const の扱いも結構ゆるい規則でしたが、例えばC++などはこれを厳密に解釈します。
const を正しく扱っていないようなCのコードに慣れてしまうと、将来的に移行などで苦労するかもしれません。
また、きれいに書かれたCのソースはかなりの部分までC++でもそのまま使えますが、この手の警告が多数出るようなCのコードは「移植」しないとまず動かなくなってしまいます。
当面C++に移行する予定がなかったとしても、スキルアップや保守性なども考えて、最初からきちんと書いておくことをお勧めします。
No.3
- 回答日時:
まず、その状態は「コンパイルは出来る」とは言えません。
警告(warning)ではなくエラー(error)が出るはずです。
char *p; // OK: 読み書き両用ポインタを宣言
const char *q; // WARNING: 読み取り専用ポインタを宣言しているが、初期値が入っていないので使い道がない。
const char a='z'; // OK: 読み取り専用変数に文字定数を入れる
const char *pq=&a; // OK: 読み取り専用ポインタに読み取り専用変数のアドレスを渡している。
p=q; // ERROR: 読み書き両用ポインタに読み取り専用のポインタを渡している
p=pq; // ERROR: p = q; に同じ。
読み取り専用メモリを書き込めるようにしたら、意味がありませんよね?
そういう理由です。
なお、この場合は ERROR よりも WARNING の方が問題です。
q は確実に初期化されている必要があるので、普通はこういうコード自体を思いつきません。
短いテストであっても、なるべく結果ありきのコードを書く癖をつけると理解しやすくなりますよ。
No.2
- 回答日時:
がると申します。
んっと…このステップ数にしては、結構な量の警告が予想されるのですが。
とりあえず
・ポインタと実態の違い、あるいは実態を作るタイミング
・const修飾子の意味
をしっかりと学ばれることを強くお勧めいたします。
ちなみに、コンパイルオプションでワーニング出力を抑止する、といった類の場当たり的対応はバグの温床を生むだけなので、お勧めいたしません。
蛇足かとは思いますが、念のため。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# Cの関数の引数のconst *charについて 5 2023/04/25 13:05
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
3分あったら何をしますか?
カップ麺にお湯を入れて、できるまでの3分間で皆さんは何をしていますか?
-
【お題】マッチョ習字
【大喜利】 「精神を鍛えるため」にと、ジムから書初めの宿題を出されたマッチョたちが半紙に書いてきたこと
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
我が家のお雑煮スタイル、教えて下さい
我が家のお雑煮スタイル、教えて下さい! (お汁)味噌汁系? すまし汁系? (お餅)角餅? 丸餅? / プレーンなお餅? あんこ餅?
-
const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CStringからchar*への型変換に...
-
C言語のintとcharの違いってな...
-
char 文字列型 の表現範囲が-12...
-
char*を初期化したいのですが
-
C++17で、unsigned char * 配列...
-
new charとnew char[N]の違いは?
-
char型にint型の数値を代入する。
-
しつこい様ですが、再度ポイン...
-
2次元配列の文字"列"の初期化方法
-
C言語にて構造体のメンバがNULL...
-
動的メモリの初期化方法について。
-
csvファイルをfscanfで読み込む...
-
DWORDとcharの変換
-
C言語で文字列をかえす正しい書...
-
文字の並べ替え
-
文字型配列に格納した空白の切捨て
-
strcatの逆をしたい
-
char AA[]{"全角文字"};から"全...
-
C言語のchar型配列を計算させる...
-
エクセルのMID関数は、C言語では?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringからchar*への型変換に...
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
char型にint型の数値を代入する。
-
小数点入りの文字列をfloat型に...
-
C言語にて構造体のメンバがNULL...
-
char 文字列型 の表現範囲が-12...
-
fstream型オブジェクトを関数の...
-
DWORDとcharの変換
-
2次元配列の文字"列"の初期化方法
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
new charとnew char[N]の違いは?
-
const char* s1とただのchar s1...
-
csvファイルをfscanfで読み込む...
-
C++17で、unsigned char * 配列...
-
文字列内の数字削除
-
szとlpszの違い
-
文字列str内の全ての数字を...
-
文字列の途中から途中までを抽出
おすすめ情報