入門C ++第2章変数+複合型

1.変数

1.初期値

オブジェクト:特定のデータ型のメモリ空間

すべての組み込み型変数を初期化することをお勧めします

1.1初期化と割り当ての違い

初期化と割り当ては完全に異なる操作です

初期化:変数を作成するときに、初期値を指定します
割り当て:オブジェクトの現在の値を消去し、新しい値に置き換えます

1.2「ビッグ4」の家を初期化する

int a = 0;
int a(0);
//列表初始化
int a = {
    
    0};
int a{
    
    0};

C ++ 11の新しい標準:中括弧{}を使用した初期値(リストの初期化とも呼ばれます)の変数が完全に使用されます

1.3初期化に関する注意事項

そこ場合の変数と組み込み型(ダブルintなどは、)、そこにある情報を失うリスクは、我々はリストの初期化を使用する場合、コンパイラが自動的にエラーを報告します。

例えば:

long double pi = 3.142312471849;
int a = {
    
    pi} , b{
    
    pi};   //报错
int m = pi, n(pi);     //正确

int型とlongdouble型は情報を失うため、Abはエラーを報告します。

2.最初の知人-キーワードextern

2.1宣言と定義の違い

スペースの確立の宣言は「定義」と
呼ばれ、ストレージスペースの確立を必要としない宣言は「宣言」と呼ばれます。

[定義]ストレージスペースを確立する必要がある(int i)

ステートメント】ストレージスペースを設定する必要はありません(extern int i)

ブック定義:
定義は、明示的な初期化(一目でわかる初期化)を含む宣言です。

宣言に初期化子がある場合、externが前に追加されていても、それは定義と見なされます

extern int i;        //声明未定义
int j;              //声明且定义
extern int k = 1;  //定义(不再是声明)
如果声明有初始化式,就被当作定义,即使前面加了extern

以下に再現されているのは、他の2人の同僚による宣言と定義の理解です。

転載:宣言と定義の違い

転載:宣言と定義

【注意】

変数は1回しか定義できません複数回宣言できます

3.識別子

3.1定義

識別子は文字、数字、およびアンダースコアで構成され、文字またはアンダースコアで始まる必要があります

大文字と小文字を区別します。
例:
int some;
int Some;
init SOME;

3.2カスタムクラス名

カスタムクラス名は大文字で始まります

例:Sales_item

複数の単語を明確に区別する必要があります

3.3 c ++キーワード

転載:C ++キーワードの説明と要約

3.4範囲

3.4.1定義

メイン:ブロックスコープ

メイン外:グローバルスコープ

オブジェクトを初めて使用するときは、オブジェクトを再定義してください

3.4.2スコープ演算子(::)

スコープ演算子が空の時間を残した場合、つまりグローバルスコープへの要求の場合、スコープ演算子は変数に対応する権利を取得します

#include<iostream>
int a = 40;
int main( )
{
    
    
int a = 0;
std::cout << :: a << std::endl;  //输出40
std::cout << a << std::endl;    //输出0
return 0;
}

2.化合物タイプ

宣言ステートメントは、基本的なデータ型とそれに続く宣言子のリストで構成されます

1.見積もり

1.1参照定義

オブジェクトに別の名前を付けました

int ival = 1024;
int &refval = ival; //refval指向ival(是ival的 另一个名字)
int &refval;  // 报错!引用必须初始化 

参照を初期化する必要があります
【理由】参照を別のオブジェクトに再バインドすることはできません

1.2一般的な初期化と参照の初期化

一般的な初期化:初期値は新しく作成されたオブジェクトにコピーされます

参照の初期化:参照と初期値は直接バインドされます

1.3引用

参照に割り当てることは、実際には、参照によってバインドされたオブジェクトに割り当てることです。

引用符で囲まれた識別子は&で始まる必要があります

参照はオブジェクトにのみバインドでき、リテラルまたは一緒にバインドされた式の結果はバインドできません

参照はまたなければならない同じタイプの参照の

int &a = 10;  //错误: 不能与计算结果绑定

int  a1 = 10;
double &b = a1;  //类型不对, 必须是double型

2.ポインタ

2.1基本的な定義

ポインタ型を定義する方法:宣言子を* d [dは変数名]の形式で記述します。

ポインタはオブジェクトアドレスを格納します。アドレスを取得する場合は、「アドレス演算子」演算子を使用する必要があります

int ival = 42;
int *p = &ival; //将ival的地址存放在p中

【注意】ポインティングの種類は同じである必要があります

2.2ポインタ値

ポインタの値は、次の4つの状態に属している必要があります

1.オブジェクトをポイントします
2.次のオブジェクトが占めるスペース内の次の位置をポイントします
3.ヌルポインター
4.無効なポインター

2.3ヌルポインタ

int *p1 = nullptr;  //最好的使用
int *p2 = 0;
int *p3 = NULL;  //预处理变量(必须使用: cstdlib 头文件)

前処理はstd名前空間に属していません

最初に、ポインタを0またはnullptrに初期化する必要があります

3. void *-特別なポインタ

void *は、任意のオブジェクトのアドレスを格納するために使用される特別なポインタ型です。

  1. 他のポインタと比較してください
  2. アクション機能の入出力
  3. 別のvoid *ポインタに割り当てる

しかし、void *はオブジェクトを直接指すことはできません
[理由]このオブジェクトのタイプがわかりません

4.演算子の使用*

転載:and&operator

int *p1, p2;//p1是指针,p2是int型
int* p1, p2;//p1是指针(合法但是容易误解),p2是int型
int *p1, *p2;//p1,p2都是指针

int * p1、p2

p1はポインタ(合法ですが誤解されやすい)、p2はint型です

おすすめ

転載: blog.csdn.net/weixin_42198265/article/details/112795980
おすすめ