C言語学習ノート(2)

I.ポインタ配列

1.テーブルポインタの関数パラメータの配列は、実際にあります

sizeof(a) == sizeof(int * );
int a[ ] ⇔ int *a
次の4つの関数プロトタイプは次と同等になります。

  • あなたは(あなたがしているN、* AR)合計します。
  • あなたは合計(あなたは[AR]、あなたしているn個)。
  • int型の合計値(int型*、int型);
  • INT和(INT []、INT)。

2.配列変数は、特別なポインタであります

  • 配列自体はアドレスを示し、
    • INT [10]。
    • int型* P =; // &変数を取る必要はありません
  • セル配列の発現は可変であり、&アドレスを取得する必要があります。
  • [オペレータアレイを作ることができ、ポインタを行うことができ、
    P [0]⇔A [0]
  • *演算子は、ポインタを使用することができ、配列を作製することができます。

  • CONST配列変数はポインタ型であり、したがって、割り当てを変更することはできません。
    INT A []⇔CONST INT * B。

    II。ポインタ算術

    (1)ポインタを追加するために、(+、+ =、 - 、 - =)減算整数;
    (2)インクリメントデクリメント(+、 - );
    (3)二つのポインタを減算します。

1.日時:

  • すなわち、プラスポインタ値プラスのsizeof(ポインタ型)で示されるアドレスへのポインタは、次のセルに移動します。
  • ポインタ1 -セル2の方向は、結果の差はないとの間のアドレス差の値である:
    (ポインタ1--ポインタ2)/はsizeof(ポインタ型)。

2. * P ++

  • Pと呼ばれるデータを除去した後、pは次のセルに移動されます。
  • 宇宙ベースの連続運転のアレイ。
  • 直接アセンブラ命令に翻訳することができるいくつかのCPUでは、

3.比較ポインタ

  • !<、<=、==、>、> =、=ポインタ(メモリアドレスを比較)比較してもよいです。
  • 配列のアドレスは直線的に増加します。

4.0住所

  • 0アドレスは、典型的には、ランダムアドレスを触れることができません。
  • ポインタは0の値を持つべきではありません。
  • 通常0アドレスと特別な事を表明:
    • 無効な値を返します。
    • ポインタは、実際に初期化されていません。
  • NULLは、事前に定義されたシンボルのアドレスを表し、0

ポインタ型

  • すべてのアドレスためのポイントの種類、すべてのポインタのサイズが同じであるどんなに。
  • ポインタは、割り当てのさまざまなタイプを指してお互いに直接ではなく、これは間違った手を使用しないことです。

6.ポインタアクション

  • 引数として渡されたときには、大規模なトランザクションが必要です。
  • 操作を行うための配列の配列を通過した後、
  • 関数の戻り以上1件の結果より、
  • 複数の変数の関数を変更する必要があります。
  • ダイナミックアプリケーションメモリ。

私の手書きのメモ


MOOCコード

生じている問題

1. *のp ++の意味

解像度:* +と次のPポジション後に取り出した値Pのレベル以下の単項。

おすすめ

転載: www.cnblogs.com/ABClazyboy/p/12443542.html