Bootstrap

从熟练Python到入门学习C++(record 4)

1.数组

1.1一维数组

注意:

1.数组长度和值的内容,总得确定一个;没有数组长度,得有值;没有值,得有数组长度;

2.打印数组名,只能打印数组中第一位的内存地址;

3.数组中每一位的地址差(int,4)的字节。

4.相当于常量,给数组划分好内存地址,不能改变常量。

#include <iostream>
using namespace std;

int main()
{
    int x[] = {1,2,3};
    int y[5] = {1,2,3,4};
    int z[10];

    cout << "x : " << x[0] << endl;
    cout << "y : " << y[1] << endl;
    cout << "z : " << (long long)z << endl;
    cout << "z : " << (long long)&z[1] << endl;

    cout << "sizeof y : " << sizeof(y) << endl;
    cout << "sizeof z : " << sizeof(z) << endl;

    return 0;
}

冒泡排序:

#include <iostream>
using namespace std;

int main()
{
    int arr[] = {4,26,86,0,552,7,1,32,935};
    int tmp, r;
    int n = sizeof(arr) / sizeof(arr[0]);

    for ( int i = 0; i < n; i++)
    {
        int count = n;
        for (int l = 0; l < n-1; l++)
        {
            r = l + 1;
            if (arr[l] > arr[r])
            {
                tmp = arr[l];
                arr[l] = arr[r];
                arr[r] = tmp;
                count--;
            }
        }
        if (count == n)
        {
            break;
        }
    }

    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;

}

1.2二维数组

有四种可以定义的方式;要注意最好使用第三种方式,全面的表达二维数组;

#include <iostream>
using namespace std;

void print(int matrix[][2], const int rows)
{
    cout << "*********"<<endl;
    cout << "sizeof matrix is : " << sizeof(matrix) <<endl;
    int m = rows;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            cout << matrix[i][j] << " ";
        }
        cout << "\n";
    }
}

int main()
{
    int matrix1[3][2];
    int matrix2[][2] = {
        {1, 2},
        {2, 4}
    };
    int matrix3[3][2] = {
        {1, 2},
        {2, 3},
        {3, 4}
    };
    int matrix4[3][2] = {1, 3, 4, 5, 7, 7};

    print(matrix1, 3);
    cout << "sizeof matrix is : " << sizeof(matrix1) <<endl;
    print(matrix2, 2);
    print(matrix3, 3);
    print(matrix4, 3);
    
    return 0;
}

这里面不像python一样,函数中存在警告,具体原因后面应该会知道;

2.函数

2.1定义

1.函数返回类型

2.函数名

3.参数表列

4.函数体语句

5.return表达式

#include <iostream>
using namespace std;

int add(int a, int b)
{
    return a + b;
}

int main()
{
    int a, b;
    cin >> a;
    cin >> b;
    cout << "a : " << a << " | b is : " << b << endl;
    int c = add(a, b);
    cout << "sum is : " << c << endl;
    return 0;
}

2.2函数的调用与值传递

与python一样:

1.实参传入,转化成函数中的形参;

2.形参改变,实参不变;因为参数传入的时候,把值赋给新的内存地址;

2.3函数的分文件编写

2.3.1对于新手来说,vscode编写比较困难;

1.首先在当前目录下创建src和include文件夹,里面分别放函数和头文件。

 2.include中的vs.h头文件相当于python的__init__.py记录函数的实例;

#include <iostream>
using namespace std;

int add(int a, int b, int c);

3.src中的vs.cpp相当于python中函数;

#include "vs.h"


int add(int a, int b, int c)
{
    return (a < b) ? b : c;
}

4.修改.vscode文件夹内两个json文件。

对于第一个json文件需要添加,相当于告诉程序,需要增加头文件夹的地址。

对于第二个json文件需要添加,把头文件和函数都加进文件夹内;

 2.3.2使用vs2022版编写,简单多了

不同的文件放进不同的文件夹中(.h放进头文件中,.cpp放进源文件中)

编写步骤可分为以下操作,学到后面应该可以简化步骤

1.在头文件中添加新的swap.h,相对于python的__init__文件

2.在源文件中添加swap.cpp函数文件,首先要和头文件进行链接,其次编写函数主体

3.在源文件中使用函数,编写hanshu.cpp文件,也要和头文件进行链接。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;