[解決済み] 初期化でポインタ対象の型から修飾語を捨てる
2022-03-11 08:19:03
質問
で参照した単一リンクリストのリストを印刷しようとしています。 リンクテキスト . うまくいくのですが、コンパイラの警告が出ます。
Initialization discards qualifiers from pointer target type
(start=headの宣言時)と
return discards qualifiers from pointer target type
(returnステートメントで)このコードで。
/* Prints singly linked list and returns head pointer */
LIST *PrintList(const LIST *head)
{
LIST *start = head;
for (; start != NULL; start = start->next)
printf("%15s %d ea\n", head->str, head->count);
return head;
}
XCodeを使用しています。何かご意見はありますか?
解決方法は?
この部分です。
LIST *start = head;
この関数のパラメータは、定数へのポインタです。
const LIST *head
これは、それが何を指しているかを変更できないことを意味します。しかし、上のポインタはnon-constへのものであり、それをデリファレンスして変更することは可能です。
である必要があります。
const
も同様です。
const LIST *start = head;
戻り値の型も同様です。
コンパイラが言っているのは、「おい、お前は呼び出し側に対して『何も変えない』と言ったが、そのチャンスを広げているんだぞ」ということです。
関連
-
_CRT_SECURE_NO_WARNINGS エラーメッセージ、解決方法
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
[C] レポートエラー 代入の左オペランドとしてlvalueが必要
-
[解決済み] 警告: 代入はポインター ターゲット タイプから修飾子を破棄します。
-
エラー: 宣言されていない識別子 'bool' の使用と C コンパイラでの問題点
-
C: 1を求める! + 2! + 3! + ... + n! (ループ)
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] 講師が書いたC言語のファイルは、なぜ最初の行に#が一つ付いているのですか?
最新
-
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] Error [Error] 代入の左オペランドとして lvalue が必要です。
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
C: 1を求める! + 2! + 3! + ... + n! (ループ)
-
[解決済み] なぜmemsetではなくbzeroを使用するのですか?
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] printfにおけるdoubleの正しい書式指定子
-
[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み] C言語の構造体(CGRectやCGPointなど)をNSLog化することは可能ですか?