Cベースの学習ノート

Cでの基本的なデータ型

  • (漢字によって表されていない)CHAR 1バイト
  • 短い2つのバイト
  • int型4バイト
  • 長い4バイト(ロング番号缶longlongs)
  • フロート4つのバイト
  • 二重の8つのバイト
  • 署名された(整数のみを変更するために使用することができます)
    • デフォルトでは、int型を締結しています
  • 符号なし(整数のみを変更するために使用することができます)
  • ボイド(直接変数を定義するが、ポインタを定義することができるではありません)
    • void *型は、任意のオブジェクトを指すことができます

注意:

  1. C言語やブール型バイトでない(0、0、非真を表し、偽を表します。)
  2. [文字列]に述べます。char * strの= "こんにちは、C"

ポインタ操作

  • ポインタ変数の宣言:int型*ポインタ;ダブル* d_pointer。
  • 二つのポインタ変数の宣言:INT **ポインタ(ポインタのみ変数のアドレスを格納するために使用され、そのためマルチレベル・インジケータができます)
  • ポインタ値が(&)変数を取ります。int *ポインタ=&I;
  • メモリ変数の値にポインタポイントを変更する:*ポインタ= 123。
  • 関数の戻り値の複数のポインタによって(基準転送を使用することで)実現してもよいです
  • 文字列は述べています。char * strの=「こんにちは、C」(printf関数、変数の値をとることは、直接STR、* STRを追加することができないことに注意してください)
  • ポインタ変数と1プラス2この操作を行って、ポインタ値がnバイト移動(バイトの数に応じて、ポインタ変数の種類によって占有しました)
  • パラメータは、関数ポインタ変数、およびポインタ変数のアドレス値を変更するための機能である場合、関数のパラメータは、二つのポインタとして宣言される、それ以外の変更は成功しません

注意:

  1. ワイルドポインタが直接割り当てられていません
  2. ポインタ型は、次のような一致するようにメモリ・アドレスに対応する値、そうでない場合、エラー値、述べ:
    ダブルI = 3.14;&Iは、INT *ポインタ=;この値はエラーを通過する*ポインタ、ダブル・ポイントを宣言しなければなりません
  3. ポインタ変数メモリサイズを共有する:32ビットプログラムは、4バイトを占め、64ビットプログラムは、8バイトを占め

メモリ

スタックメモリ

  • スタック上に作成されました。機能中、記憶装置の機能は、スタック上のローカル変数を作成することができ、メモリセルは自動的に機能実行の終了時に解放されます。プロセッサ命令セット、高効率が、割り当てられたメモリの限られた量のスタックメモリ割り当て動作を制御します。
  • return文機能、メモリは自動的に関数本体の終わりに破壊されるので、「スタックメモリ」と「ポインタ」または「参照」をポイントに戻らないように注意してください。

ヒープ

ALL

スタティックメモリ

ALL

構造

定義する方法1.

キーワード:構造体(クラスで同様のjava)

struct Student {
    short age;
    int score;
};

2.どのように宣言すると、使用

struct Student {
    short age;
    int score;
};

main() {
    struct Student stu = {18, 100};
    printf("分数:%d", stu.score);
}

3.構造は、メモリを占有し

  • 構造サイズ> =構造は、バイトの可変数のそれぞれによって占有と
  • 構造サイズ=その変数の最大の整数倍を占める構造(メモリ位置合わせのためには、ビット操作を容易にするために)

4. C構造で関数を定義することはできません

  • C構造は、関数で定義することができないが、関数ポインタを介して定義することができます
    • ルールを定義します。 戻り値(*関数ポインタ変数名)(パラメータ)
void study() {
 printf("day day up!");
}

struct Student {
    short age;
    int score;
    
    void(*study_pointer)();
};

main() {
    struct Student stu;
    stu.study_pointer = &study;
    stu.study_pointer();
}

間接参照演算子

  • 記号: - >
  • 処置:構造における構造体ポインタ変数要素への直接呼び出しを行うために、この演算子を使用します
struct Student {
    short age;
    int score;
}

main() {
    struct Student stu = { 18, 100 };
    struct Student* stu_pointer = &stu;
    printf("分数:%d", stu_pointer -> score);
}

連邦

  • キーワード:労働組合
  • 処置:データ型の値は時々、時々、別のデータ型、そして時間はメモリ効果を節約するために、連邦に使用することができている場合
  • メモリフットプリント:このような場合などメモリタイプの最大のシェア、コンソーシアムは、(int型の最大収容人数を取るためにバイト数)4つのバイトを占め
union result {
    int code;
    char flag;
}

main() {
    union result r;
    r.code = 1;
    printf("%d", r.code);
}

列挙

enum MyEnum {
	ONE, TWO
};

main() {
	enum MyEnum e = ONE;
	printf("%d", e); // 0
}

カスタム・タイプ

  • キーワード:typedefは
  • 役割:個々の変数名を取ります
typedef struct Student {
    short age;
    int score;
} stud;

main() {
    stud stu = { 18, 100 };
    printf("分数:%d", stu.score);
}
公開された12元の記事 ウォンの賞賛3 ビュー2442

おすすめ

転載: blog.csdn.net/AWen_Jack/article/details/104613310