差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
c言語:つまづき [2022/11/29 23:44] – 削除 - 外部編集 (Unknown date) 127.0.0.1 | c言語:つまづき [2025/04/12 05:15] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | # C言語 | ||
+ | ##### constおよびポインタの関係 | ||
+ | |||
+ | 以下の場所によって「const」と「*」によって変更不可となる部分が異なる | ||
+ | |||
+ | - const char* | ||
+ | |||
+ | - char* const | ||
+ | |||
+ | - const char* const | ||
+ | |||
+ | ##### 2次元配列を関数に渡す | ||
+ | |||
+ | 参考サイト:[[https:// | ||
+ | |||
+ | ``` | ||
+ | int func (???) | ||
+ | { | ||
+ | (hogeを使った処理) | ||
+ | ・・・ | ||
+ | } | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | int hoge[4][3] = { 0 }; | ||
+ | | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | この時、「??? | ||
+ | |||
+ | **正解** | ||
+ | |||
+ | - (*hoge)[3] | ||
+ | - (hoge[][3] | ||
+ | - hoge[4][3] | ||
+ | |||
+ | 3つは等価で、「(サイズ3の配列)へのポインタ」 | ||
+ | |||
+ | **間違い①** | ||
+ | |||
+ | - (*hoge)[] | ||
+ | - hoge[][] | ||
+ | - hoge[4][] | ||
+ | |||
+ | 以上の3つは等価で、「(サイズ不明の配列)へのポインタ」 | ||
+ | |||
+ | サイズが不明なのでアドレスを計算できず、コンパイルエラー | ||
+ | |||
+ | **間違い②** | ||
+ | |||
+ | - **hoge | ||
+ | - *hoge[] | ||
+ | - *hoge[3] | ||
+ | |||
+ | 以上の3つは等価で、「ポインタへのポインタ」 | ||
+ | |||
+ | 呼び出し元と方が合わないのでコンパイルエラー | ||
+ | |||
+ | ##### ダブルポインタ | ||
+ | |||
+ | 参考サイト:[[https:// | ||
+ | |||
+ | ^ 方法 | ||
+ | | 値渡し | ||
+ | | ポインタ渡し | ||
+ | | ダブルポインタ渡し |