10: 2011-07-08 (金) 15:06:29 yoshida | 11: 2011-07-08 (金) 21:29:37 yoshida | ||
---|---|---|---|
Line 162: | Line 162: | ||
***配列とポインタ [#de8fd791] | ***配列とポインタ [#de8fd791] | ||
- | アドレスを利用する別の方法としてポインタがあります。~ | + | アドレスを利用するには配列とポインタをしっかりと学ぶ必要があります。~ |
- | char *a = "BEST"; | + | ****配列とは [#ze3b2962] |
- | 以上がchar型のポインタ宣言となります。BESTという文字列はメモリ上のどこかに格納されており、そのアドレスを示しているのがポインタです。~ | + | 配列はその変数の型の配列数分メモリ領域を確保します。確保された配列上は型さえ一致すれば何を代入しても問題ありません。~ |
- | BESTという文字列を操作するにはアドレスを介して操作するしかありません。そのため、*を間接演算子と呼びます。~ | + | 宣言方法は以下の通りです。 |
+ | #html{{ | ||
+ | <pre class="brush:c"> | ||
+ | char a[5] = "BEST"; | ||
+ | </pre> | ||
+ | }} | ||
+ | #ref(table.png,100%) | ||
+ | |||
+ | ****ポインタとは [#o91e72b0] | ||
+ | #ref(pointer.png,100%) | ||
+ | 使用方法は配列とあまり変わりません。~ | ||
+ | 但し、変数は配列数分メモリ領域には確保されず、メモリ上のどこかに確保されたデータのアドレスのみを受け渡します。BESTという文字列を操作するにはアドレスを介して操作するしかありませんので、*を間接演算子と呼びます。~ | ||
以下にアドレス演算子を使用した場合と比較してみます。 | 以下にアドレス演算子を使用した場合と比較してみます。 | ||
| 状態 | アドレス演算子 | 間接演算子 | | | 状態 | アドレス演算子 | 間接演算子 | |