文書の表示以前のリビジョン文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 # C言語 ##### constおよびポインタの関係 以下の場所によって「const」と「*」によって変更不可となる部分が異なる - const char* - char* const - const char* const ##### 2次元配列を関数に渡す 参考サイト:[[https://lipoyang.hatenablog.com/entry/20130829/p2|2次元配列を関数に渡すとき - 滴了庵日録]] ``` int func (???) { (hogeを使った処理) ・・・ } int main(void) { int hoge[4][3] = { 0 }; func(hoge); } ``` この時、「???」に何を渡せばよいかというと、 **正解** - (*hoge)[3] - (hoge[][3] - hoge[4][3] 3つは等価で、「(サイズ3の配列)へのポインタ」 **間違い①** - (*hoge)[] - hoge[][] - hoge[4][] 以上の3つは等価で、「(サイズ不明の配列)へのポインタ」 サイズが不明なのでアドレスを計算できず、コンパイルエラー **間違い②** - **hoge - *hoge[] - *hoge[3] 以上の3つは等価で、「ポインタへのポインタ」 呼び出し元と方が合わないのでコンパイルエラー ##### ダブルポインタ 参考サイト:[[https://lipoyang.hatenablog.com/entry/20130829/p1|ダブルポインタ - 滴了庵日録]] ^ 方法 ^ 説明 ^ | 値渡し | 呼び出し元に変化なし | | ポインタ渡し | 呼び出し元の値を変更可。参照に変化なし\\ 配列を渡して各値を変更可 | | ダブルポインタ渡し | 呼び出し元参照も変更可。\\ ポインタ配列を渡して各参照も変更可 | c言語/つまづき.txt 最終更新: 2025/04/12 05:15by 127.0.0.1