精简CPP1

看数据结构 经常遇到c++语法, 所以找了个不算长的c++教程看了看. 暂时准备一天一节吧.

第1章 C++简介

基本语法

输入输出

#include<iostream>
using namespace std;

int main()
{
    int x;
    cin >> x; // 接收输入指令
    cout << "x=" << x << endl; // 输出函数

    return 0;
}

命名空间

防止程序中的同名问题, 最常见的 std 命名空间.

int main()
{
    int i;
    cin >> i;
    cout << "i = " << i << endl;

    cin >> a >> b >> c;
    // 等价于
    // cin >> a;
    // cin >> b;
    // cin >> c;

    return 0;
}

const 常量

常量声明时必须赋初值, 而在程序中间不能改变值.

int main()
{
    const int LENGTH = 10; // 全大写表示常量
    return 0;
}

new 与 delete

  • new: 用于从堆终分配指定大小的内存区域, 并返回获得内存区域的首地址. 相较于malloc可以自动计算大小, 无需指针转换.
  • delete: 用于释放 new 分配的堆内存.
int main()
{
    int num =0;
    cin >> num;

    // 分配了一个动态数组
    int* arr = new int[num]; 
    delete[] arr;

    return 0;
}

引用

引用是某个对象的别名

<类型> &引用名 = 变量名;

int main()
{
    // 很少单独使用
    // 通常作为形参使用
    int a = 10;
    int &b = a; // b是a的别名
    
}
  • 变量声明出现&引用运算符, 其余&都是取地址符
  • 引用代表一个变量的别名, 必须在定义时初始化, 不能再定义完成后再赋值
  • 一个引用名只能作为一个变量的别名
#include<instream>
using namespace std;

    void swap(int &a, int &b)
    {
        int temp = a;
        a = b;
        b = temp;
    }

    int main()
    {
        int x = 5, y = 10;
        cout << "x = " << x << "y = " << y << endl;
        swap(x, y);
        cout << "x = " << x << "y = " << y << endl;
        
        return 0;
    }

函数重载

一个函数的多种写法, 函数名相同, 参数不同.

  • 形参必须不同, 个数不同或类型不同
  • 程序将根据实参和形参的类型以及个数的最佳匹配选择调用的函数.
int main()
{
    // 参数类型不同
    int add(int x, int y);
    float add(float x, float y);

    //形参个数不同
    // int add(int x, int y);
    int add(int x, int y, int z);
}

示例: 计算平方和

#include<iostream>
using namespace std;

int sumOfSquare(int a, int b)
{
    return a*a + b*b;

}

double sumOfSquare(double a, double b) 
{
    return a*a + b*b;
}

int main()
{
    int m, n;
    cout << "ENTER TWO INTEGER:";
    cin >> m >> n;
    cout << "THERE SUM OF SQUARE: " << sumOfSquare(m, n) << endl;

    double x, y;
    cout << "ENTER TWO REAL NUMBER: " ;
    cin >> x >> y;
    cout << "THERE SUM OF SQUARE:" << sumOfSquare(x, y) << endl;
    
    return 0;
}

传入参数不要有模棱两可的情况

int sumOfSquare(double a, int b) 
{
    return a*a + b*b;
}
double sumOfSquare(int a, double b) 
{
    return a*a + b*b;
}

带默认值的函数

声明时预先给出默认的形参值, 调用时给出实参, 则采用实参, 否则仍使用预先的默认参数值.

int add(int x = 5, int y = 6)
{
    return x + y;
}

int main() 
{
    add(10, 20); // 10 + 20
    add(10); // 10 + 6
    add(); // 5 + 6

    return;
}

一般情况下, 建议给每个默认参数都设置一个初始值, 不要有的设置有的不设置.

函数调用顺序

当声明的函数位置在 main 函数之后, 则需要在 main 函数前提前声明函数原型.
如果在 main 函数前声明函数原型, 则必须在声明原型时, 写明默认参数值.

int add(int x= 5, int y = 6)

int main()
{

}

int add (int x, int y)
{
    return x + y;
}

练习1:

  • 接收 int 输入值 n, 动态分配空间为 n 的 radius
  • 从标准输入 n 个浮点数存储在数组 radius 中, 这 n 个数代表 n 个圆的半径
  • 编写函数 sumArea(double* radius, int n) 求这 n 个圆的面积和
  • 输出总面积, 保留小数点后5位.
  • 尽量使用 cin/cout, const, namespace, 引用, new/delete
#include<iostream>
using namespace std;

const double PI = 3.1415;

// 接收数组需要使用指针
double sumArea(double* radius, int num)
{
    double sum = 0;

    for(int i = 0; i < num; i++)
    {
        // 圆面积公式为 pi * 半径 * 半径
        sum += radius[i] * radius[i] * PI;
    }

    return sum;

}


int main()
{
    int num = 0;
    double sum;

    cout << "INPUT A INTEGER AS SIZE OF ARRAY: ";
    cin >> num; // 7

    double* radius = new double[num];

    // 给半径数组赋值
    // 初始值最好从0开始, 数组下标也是从0开始
    for (int i = 0; i < num; i++)
    {
        radius[i] = i + 1;
    }

    sum = sumArea(radius, num);

    cout << sum;

    // 销毁使用完毕的内存
    delete[] radius;

    return 0;
}

posted @ 2025-06-20 17:16  鲲特牌  阅读(6)  评论(0)    收藏  举报