C 言語 ポインタ 四則 演算
こんにちは、ナナです。 「ポインタ変数」はメモリの番地を管理するための変数です。番地を管理するが故に、普通の数値とは異なる演算ルールが適用されます。 特殊である理由も含めて解説していきます。 本記事では次の疑問点を解消する内容となっています。 本記事で学習できること ポインタに対する加減算の演算結果とその意味とは? C言語 ポインタへの演算【番地に対する演算の特殊性を解説】. ポインタに対する乗除算の演算結果とその意味とは? ポインタに対するsizeof演算子の適用パターンと演算結果とは? では、ポインタへの演算の特殊性を学んでいきましょう。 ポインタ変数に対する四則演算の特殊性 師匠!「ポインタ変数」って番地を覚えてるんですよね。ちょっと変わった変数ですね。変わり者のポインタ変数のことをもっと知って、仲良くなりたいのですっ。 ナナ そうだね、ポインタ変数は番地を記憶するという特殊性から、演算に対する結果が特殊なものになるんだよ。そのあたりを学んでみようね。 ポインタ変数は番地を管理するため、四則演算は特殊なルールが適用されることになります。 ポインタ変数に対する加減算の特殊ルール ポインタ変数が管理する番地に加減算(+・-)をした場合、通常の加減算とは異なる動作をします。 次のように、ポインタ変数に対するインクリメントが、どんな結果となるのかを明らかにします。 short num[2] = {0x0123, 0x4567}; short * pnum = num; // pnumの番地に1を加算 pnum++; // pnumの番地はどうなる? 注意してください。 ここで問うているのは、ポインタの参照先のメモリに対する加減算ではなく、ポインタ変数の持つ番地に対する加減算ということです。 こんなのは当然「101番地」に決まっていると考えたあなた・・・、実は違うんです。 答えは「102番地」です。不思議なことに+1したのに番地が2増えるのです。 次のポインタ変数に対する加算は、次の結果になります。皆さん規則性がわかりますか?
C言語 ポインタへの演算【番地に対する演算の特殊性を解説】
<ポインタの演算>
ポインタ変数の演算には、注意が必要です。
int
data[]={10, 20, 30, 40};
int *ip =
data; /*
int 型ポインタ ip を宣言し、配列 data の先頭アドレスで初期化 */
ip++; /*
ip の値に 1 を足す?? */
printf("%d\n",
*ip);
ポインタ変数 ip を配列 data の先頭アドレスで初期化した後、3行目で ip をインクリメントしていますが、実際にはここでどのような演算がなされているのでしょうか? ポインタがアドレスを格納するための変数であること考えれば、 ip++ はアドレスの値に1を加えていると思うかもしれません。しかし、実際には出力が "20" であることからも分かるとおり、演算の結果、 ip は data の2番目( data[1] )のアドレスを指しています。つまり、 ip++ によって、 ip が示すアドレスは int 型のサイズ分増えていることになります。 ip+1, ip+2 という演算結果も同様です。また減算も同様です。
#include
sizeof演算子
sizeof演算子を知りたいあなたは, sizeof演算子の使い方 を読みましょう. 【C言語】sizeof演算子の使い方
こういった悩みにお答えします. こういった私から学べます. 目次1 sizeof演算子2 sizeof演算子でデータ型のサイズの計算3 sizeof演算子で変数のサイズの計算4 sizeof演算子でポ...
ポインタ演算子
ポインタ演算子を知りたいあなたは, ポインタとは を読みましょう. 【C言語】ポインタとは
こういった悩みにお答えします. こういった私から学べます. 目次1 ポインタ2 ポインタ変数2. 1 ポインタ演算子の使い方2. 2 ポインタ変数を利用するコード3 ポインタと関数の引数:値渡しと参照渡し...
まとめ
C言語の演算子を紹介しました. C言語には多くの演算子がありますので,正しく理解してシンプルで読みやすいコードを書けるように使いこなしましょう. 演算子の優先順位と結合規則を知りたいあなたは,こちらの記事を読みましょう. 【C言語】演算子の優先順位と結合規則
こういった悩みにお答えします. こういった私から学べます. 目次1 演算子の優先順位と結合規則2 演算子に関する記事3 まとめ 演算子の優先順位と結合規則 数学の式に優先順位があるのと同様に,C言語の...
C言語を独学で習得することは難しいです. 私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します. 独学が難しいあなたは, C言語を学べるおすすめのオンラインプログラミングスクール3社 で自分に合うスクールを見つけましょう.