C言語のポインタ、ダイナミックアレイ、プリコンパイルされた要約

ポインタ:

ポインタのために、私は教科書の多くの概念を導入しないより良い私より話します。私はポイントのポインタ操作は注意すべきでまとめるためにここにいます:

伝達関数パラメータ、パスによる伝統的な値は、ローカル変数の、他のタイプのアレイ中1、他のパススルー機能に値を変更します。

    int型のA = 1;関数の引数はint型* xと書くべき;パラメータ渡しの引数があること&するとき。

    しかし、通過することにより、パラメータ変更ポイントの機能、指向元の関数の引数に影響を与えず。

    このようA->住所1、パス引数パラメータB->住所1、元の関数の引数は、b値が変化点には影響を与えません。

状況下で2.二次元アレイは、図の関係が存在する(図このポインタ操作は、基本的な言及が理解しました): 

    

3. 3つの方法のパラメータとして、二次元配列:即ち、INT B [] [6]、 INT(* B)[6]、INT ** B。第3のパラメータ通過した後に得られた第1の2次元CAN省略されていないが、実際には一次元アレイ、注動作モードです。

4. C文字列は、2つの方法で格納されている:最初の文字の配列が、文字ポインタです。方法が、2つの保存された文字列はポインタに格納された値、および文字列を格納する各文字列ユニットが最初のアドレスであり、異なっています。唯一のアドレス空間を記憶するための4バイト文字ポインタ、文字列が連続した記憶空間の値の系列がある場合にシステムをコンパイル。

文字ポインタの場合は、直接C ++文字列型の種類、プット()出力として割り当てられ、使用時の標準アクセスなどの文字の配列として、等号によって割り当てられ、文字ポインタすることができます作ったが、文字ポインタが初期を書くことを覚えておく必要があります使用することができます値、それ以外の場合はポインタが指すが不確実である、野生のポインタの使用は危険です。文字ポインタを使用しているとき、それは初期値にしようとする場合、もちろん、それは動的配列、文字ポインタにアドレスにいくつかのスペースを開けますが、文字ポインタのアドレスが変更されました。この時注意することに組み込むことができます。

割り当て、文字間の文字ポインタ等号の間の可能なため。しかし、文字ポインタと文字配列bのために、我々はに、等号は自然まず、第二文字のコピー機能のため、strcpyの(a、b)はありません、strcpyの(B)あなたは(これはコンパイラの理論に関連しなければならない)ことが可能である使用することはできません第1の動作を実行し、それは次のように書かれるべき=&B [0]または=&B、または特定空間に開きます。

5.ポインタ機能:まず、関数名は、最初のアドレスで、関数の名前は関数ポインタです。関数int最大(int型A、INT Bの場合 ); pは、この関数へのポインタであるが(* P)(int型、intとして定義されるべきである INT)、 次にP =最大 あなたが(* p)を呼び出すと(A、B ) することができます。

ポインタを返すように、機能タイプは、それに応じて変更することができます。

前記ポインタの配列: CHAR *名[] = { "AAA"、 "BBB"、 "CCC"};要素名は3つのアドレス3つの第1列、プット(名前[I])に格納され 、 それぞれ出力3つの文字列。

ポインタへのポインタ7:CHAR *名[] = { "AAA"、 "BBB"、 "CCC"}; CHAR ** P; P =名;プット(*(P + I)); 3つの出力をそれぞれ文字列。

、比較的簡単で、他の例と似ていますが、現在はこのような状況の実用化を経験している出会い追加した後の文字列のポインタの役割へのポインタとポインタの配列。

第二に、動的配列:

1 INT * P; P =(INT *)はmalloc(はsizeof(INT)); pはint型のポインタアドレスにキャストされたサイズの// INTオープンスペース。

2. int型* P; P =(int型*)はcalloc(5、はsizeof(int型)); // int型のオープン5つの連続した空間の大きさ、そのアドレスは、pへのint型のポインタ最初のキャストです。

2.無料(P); //、アプリケーションスペースを解放し、メモリリークを簡単にリード解放しません。

第三に、プリプロセッサ:

1.マクロ定義します。#define PI 1E6 + 5

2.ファイルが含まれています:ファイルシステムの#include <stdio.hに>、カスタムファイルの#include "gaoithe.h"。

3.条件付きコンパイル:

//第一种:如果标识符被定义,执行程序段1,否则执行程序段2

#ifdef 标识符
    程序段1
#else
    程序段2
#endif

//第二种:表达式值为真,执行程序段1,否则执行程序段2

#if 常量表达式
    程序段1
#else
    程序段2
#endif

すなわち、類似しているがないプリプロセッサ4.補足変数名置換:typedefの長い長いLLと、

公開された34元の記事 ウォン称賛26 ビュー10000 +

おすすめ

転載: blog.csdn.net/sinat_40471574/article/details/90213740