差分
このページの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:// | ||
| + | |||
| + | ^ 方法 | ||
| + | | 値渡し | ||
| + | | ポインタ渡し | ||
| + | | ダブルポインタ渡し | ||