C ++の研究ノート(B)(配列、機能)

このノートブックはチュートリアルから主に来るhttps://www.bilibili.com/video/av41559729?p=1

5アレイ

5.1概要

いわゆるアレイは、データ要素の同じ種類の内部に格納されたコレクションです。

1特長:データの配列の各要素が同じデータ型です。
特徴2:アレイは、その連続したメモリ位置です。

5.2一次元アレイ

5.2.1どのように一次元アレイを定義します

1. 数据类型 数组名[数组长度]
2. 数据类型 数组名[数组长度]={值1,值2…};//すべて記入していない初期化データは、残りのデータを埋めるために0を使用する場合。
3. 数据类型 数组名[]={值1.值2…};//アレイを定義する場合、最初の長さがなければならない(データの{}少なくとも一つの内部有する)
インデックス配列要素は、ゼロからインデックス付けされます。

5.2.2 1次元配列の配列名

用途の1次元配列に名前を付けます:

  1. あなたは、メモリ内の配列全体の長さをカウントすることができます。
  2. あなたは、メモリ内の配列の最初のアドレスを取得することができます。
#include< iostream>
using namespace std;

int main()
{
    //数组用途
    //1. 可以统计整个数组在内存中的长度。
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    cout << "整个数组占用内存空间为 :" << sizeof(arr) << endl;
    cout << "每个元素所占用的内存空间为: " << sizeof(arr[0]) << endl;
    cout << "数组中元素的个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;


    //2. 可以获取数组在内存中的首地址。
    cout << "数组首地址为: " << arr << endl;//16进制
    cout << "数组首地址为: " << (int)arr << endl;//强转成十进制
    cout << "数组中第一个元素的地址为: " <<  (int)&arr[0] << endl;
    cout << "数组中第二个元素的地址为: " << (int)&arr[1] << endl;//与第一个紧挨着,只差四个字节。



    //数组名是常量,不可以进行赋值的操作。
    //arr = 100;报错




    system("pause");
     return 0;

}

配列名は定数であり、割り当てを操作することはできません。

運動ケース:逆行性の要素

#include< iostream>
using namespace std;

int main()
{
    //实现数组元素逆置

    //1.创建数组
    int arr[5] = { 1,3,2,5,4 };
    cout << "元素数组逆置前:" << endl;
    for (int i = 0; i < 5; i++)
        cout << arr[i] << endl;

    //2.实现逆置
    //2.1记录起始下标的位置
    //2.2记录结束下标的位置
    //2.3起始下标与结束小标的元素互换
    //2.4起始位置++,结束位置--
    //2.5循环执行2.1操作,直到起始位置>=结束位置
    int start = 0;//起始下标
    int end = sizeof(arr) / sizeof(arr[0]) - 1;//结束下标

    while (start < end) //重要:停止条件,自己之前没有想到。
    {
        //交换代码
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        //下标更新
        start++;
        end--;
    }


    //3.打印逆置后的数组
    cout << "数组元素逆置后:" << endl;
    for (int i = 0; i < 5; i++)
        cout << arr[i] << endl;



    system("pause");
     return 0;

}

ストップコンディション注意

5.2.3バブルソート

処置:最も一般的に使用されるソート方法は、配列の要素をソートします。

  1. 第一は、第二よりも大きい場合、隣接する要素を比較し、それらの両者は交換しました。
  2. 隣接する要素のペアごとに同じ作業を行い、実装後、最初の最大値を見つけます。
  3. 比較する必要までは、上記の手順、各比較-1回繰り返します。

例:配列{4,2,8,0,5,7,1,3,9}昇順

#include< iostream>
using namespace std;

int main()
{
    //利用冒泡排序实现升序序列。
    int arr[9] = { 4,2,8,0,5,7,1,3,9 };

    cout << "排序前: " << endl;
    for (int i = 0; i < 9; i++)
    {
        cout << arr[i] << " ";

    }
    cout << endl;

    //开始冒泡排序
    //总共排序轮数为 元素个数-1
    for (int i = 0; i < 9 - 1; i++)
    {
        //内层循环对比  次数=元素个数-当前轮数 -1
        for (int j = 0; j < 9 - i - 1; j++) 
        {
            //如果第一个数字比第二个数字大,交换两个数字
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;


            }

        }
    }
    //排序后结果
    cout << "排序后: " << endl;
    for (int i = 0; i < 9; i++)
    {
        cout << arr[i] << " ";

    }
    cout << endl;

    system("pause");
     return 0;

}

なお、ラウンドソート-1の数などの要素の総数が、一方比較におけるインナーループカウント=要素の数 - このラウンド-1

5.3二次元アレイ

2次元アレイ状に余分な次元を追加し、一次元アレイです。

5.3.1二次元アレイ定義された方法

4つの方法で定義された二次元配列:

  1. 数据类型 数组名[行数][列数]
  2. 数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}}
  3. 数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4}
  4. 数据类型 数组名[][列数]={数据1,数据2,数据3,数据4}
推奨:4以上の定義された方法は、第二は、より直感的で、コードの可読性を向上させます。

5.3.2二次元配列アレイ名

用途

  • 表示桁グループ共有メモリ空間。
  • 最初のアドレスの2次元配列を取得します。

#include< iostream>
using namespace std;

int main()
{
    //二维数组数组名
    int arr[2][3] = 
    {
        {1,2,3},
        {4,5,6}
    };
    cout << "二维数组大小: " << sizeof(arr) << endl;
    cout << "二维数组一行大小: " << sizeof(arr[0]) << endl;
    cout << "二维数组元素大小: " << sizeof(arr[0][0]) << endl;

    cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;
    cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;

    //地址
    cout << "二维数组首地址" << (int) arr << endl;
    cout << "二维数组第一行地址" << arr[0] << endl;
    cout << "二维数组第二行地址" << arr[1] << endl;

    cout << "二维数组第一个元素地址" <<(int) &arr[0][0] << endl;
    cout << "二维数组第二个元素地址" << &arr[0][1] << endl;


   

    system("pause");
     return 0;

}

6機能

6.1概要

処置:いくつかの頻繁に使用されるコードカプセル化された、コードの重複還元
一般複数のブロックに分割し、より大きなプログラムのは、各モジュールは、特定の機能を実行します。

6.2定義された関数

関数の定義は、一般的に5つの主要な段階があります。

  1. 戻り値の型
  2. 関数名
  3. パラメータリスト
  4. 関数本体文
  5. return式の
    構文:
返回值类型 函数名 (参数列表)
{
    函数体语句




    return表达式

}
    //函数的定义
    //语法:
    //返回值类型 函数名(参数列表) {函数体语句  return表达式}
    //加法函数,实现两个整型相加,并将相加结果返回
    int add(int num1, int num2)
    {
        int sum = num1 + num2;
        return sum;
    }

6.3関数呼び出し

機能:使用機能を定義しました。
構文函数名(参数)

#include< iostream>
using namespace std;

//定义加法函数
//函数定义时,num1和num2并没有实际数据
//只是形式上的参数,简称形参
int add(int num1, int num2)
{
    int sum = num1 + num2;
    return sum;
}


int main()
{
    //main函数中调用add函数
    int a = 10;
    int b = 20;
    //函数调用语法:函数名(参数)定义时没有参数就不用填写
    //a和b称为实际参数,简称实参
    //当调用函数时,实参的值会传递给形参
    int c = add(a, b);
    cout << "c= " << c << endl;

    system("pause");
    return 0;
}

6.4値が渡されます

  • 渡された、いわゆる値は、関数呼び出しのパラメータに渡された値の引数です
  • 値が渡されると、パラメータが変更された場合、引数は影響しません。
#include< iostream>
using namespace std;

//值传递
//定义函数,实现两个数字进行交换函数

//如果函数不需要返回值,声明时可以写void
void swap(int num1, int num2)
{
    cout << "交换前: " << endl;
    cout << "num1= " << num1 << endl;
    cout << "num2= " << num2 << endl;

    int temp = num1;
    num1 = num2;
    num2 = temp;

    cout << "交换后: " << endl;
    cout << "num1= " << num1 << endl;
    cout << "num2= " << num2 << endl;


    //return;返回值不需要时,可以不写reurn
}


int main()
{
    int a = 10, b = 20;
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;

    //当我们做值传递时,函数的形参发生变化,并不会影响实参
    swap(a, b);
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;//a和b并没有发生变化

    system("pause");

    return 0;
}

関数の6.5一般的な形態

4種類の形で一般的な機能:

  1. リターンのない参加しないん
  2. 復帰へのパラメータはありません
  3. 復帰へのパラメータはありません
  4. Youcanyoufan

機能の6.6声明

役割:どのように関数名をコンパイラに指示して関数を呼び出します。関数の実際のボディは、独立して定義することができます。

関数の 宣言は、繰り返すことができる が、機能がされて 一度だけ定義します
#include
using namespace std;

//函数的声明
//比较函数,实现两个整型数字进行比较,返回较大的值


//提前告诉编译器函数的存在,可以利用函数的声明
//函数的声明
//声明可以写多次,但是定义只能有一次
int max(int a, int b);
int max(int a, int b);
int max(int a, int b);
int max(int a, int b);

int main()
{
    int a = 10;
    int b = 20;

    cout << max(a, b) << endl;

    system("pause");

    return 0;
}


//定义
int max(int a, int b)
{
    return a > b ? a : b;
}

6.7ポイント書面機能

役割:コードより明確な構造を作ります。
サブファイルの書き込み機能、一般的に4つのステップ:

  1. .Hの接尾辞と呼ばれるヘッダファイルを作成します。
  2. サフィックスの.cppファイルのソースと呼ばれるファイルを作成します。
  3. ヘッダファイル内の関数の宣言を記述します。
  4. 書き込み機能は、ソースファイルで定義されています。

ヘッダーswap.h

#include< iostream>
using namespace std;

//函数的声明
void swap(int a, int b);

ソースファイルswap.cpp

#include"swap.h"

//函数的定义
void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;

    cout << "a= " << a << endl;
    cout << "b= " << b << endl;
}

プログラム

#include
using namespace std;
#include"swap.h"

//1. 创建后缀名为.h的头文件
//2. 创建后缀名为.cpp的源文件。
//3. 在头文件中写函数的声明。
//4. 在源文件中写函数的定义。


int main()
{
    int a = 10;
    int b = 20;
    swap(a, b);

    system("pause");

    return 0;
}




 
最後に、私の個人的なブログを訪問する歓迎禅のブログを聞くFROG

リリース元の4件の記事 ウォンの賞賛0 ビュー28

おすすめ

転載: blog.csdn.net/qq_40694605/article/details/104536537