C

C言語--- char配列とcharポインタについて



C Language About Char Array



今日、データ構造の線形テーブルを学習する過程で、char配列とポインターに問題が発生しました。正直なところ、これも長い間悩んできた問題です。

問題の説明


上記のコードに示されているように、char配列aを定義した後、それを仮パラメーターとしてinsert()関数に渡し、配列のアドレスをコンパイルエラーで返します。エラーコードは次のとおりです。 互換性のないパラメータタイプの割り当て:char *割り当てchar [8]。
1.戻り値を配列にすることはできないため、main関数で変更できるのはaの型のみです。char* a = 'abcdefg'コンパイル中に警告が表示されます。 'abcdefg'はconstchar型であるため、aは文字ポインターです。コンパイラは、定数領域に8バイトのスペースを「abcdefg」に割り当ててから、そのアドレスをaに返すことが理解できます。したがって、ポインタが指すコンテンツはconst型であり、変更できないため、ポインタもconst char *型である必要があります。 キーワードconstについて質問がある場合は、以下を参照してください。 const char *とchar * constの違い
2.ポインタを定数ポインタに変更しました。これに対応して、以下に関連するすべての場所を変更します。
コンパイルや操作に異常はなく、警告は無事に解消されました。
要約すると:1。キーワードconstのさまざまな使用法に留意してください。 2.仮パラメータで配列を呼び出す方法は次のとおりです。 タイプ+配列名[] 、引数で直接使用されます 配列名 それでおしまい。 3.新しい質問の配列の名前は何ですか?