极简C++(1)基础语法简介

输入输出

输入:cin>>x
输出:cout<<“x=”<<x<<endl

int x;
cin>>x;
cout<<"x="<<x<<endl
运行结果:x=10(endl表示换行)

在程序最前面必须加

#include <iostream>
using namespace std;

命名空间

为了防止程序中的同名问题,最常见的是用std来命名空间
using namespace std;

const常量

常量在声明的时候必须赋予初值,并且在程序执行过程中不得修改
const 类型 常量名=初值;
const int LENGTH = 10;
(一般使用常量的时候,我们的命名用全大写字母)
这里有个常问的问题就是 const 和 define 的区别是什么?
1.处理阶段不同:define是预处理器预处理阶段处理的,const是编译器编译阶段处理的
2.内存:define不占内存,const会分配内存去存储变量
3.安全性:define只是简单的替换,没有数据类型与作用域的规定,可以将任何文本替换成宏定义而const会进行类型检查,更加可靠
所以,编码的时候建议大家使用const;

new和delete

new和delete用于堆空间的内存分配与回收
new:用于从堆中分配指定大小的内存,并返回内存的首地址。
delete:用于释放new分配的堆内存。

int *arr = new int[100]; 
delete[] arr;
# 这样可以分配和释放一个动态数组

引用

引用是某个变量的别名

int a = 10;
int &b = a;

常常作为形参的方式来使用,不会像上面这样使用
&只有在变量声明的时候才是引用,其他地方使用是取地址运算符
接下来举个例子说明一下

#include<iostream>
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;
}
输出:
x = 5 y = 10
x = 10 y = 5

是不是有点熟悉,但又说不上来,那我们先复习一下,函数传参有几种方式呢?

1.传值模式:
在这里插入图片描述
在这里插入图片描述

我们可以看到,程序为a,b分配了内存,并且a,b的值交换了,但是x,y的值还是不变的,这就是我们的传值模式;

2.传地址模式
在这里插入图片描述
在这里插入图片描述
我们可以看出,我们是将x与y的地址传入函数,main和swap共用了xy的存储空间所以x,y会被改变;

3.传引用模式
在这里插入图片描述
为x,y新添了一个别名a,b,操作a,b,实际上改变的还是x,y;

函数重载

函数重载就是函数有多种用法,即函数名相同,但参数不同
可以是参数类型不同:
int add(int a, int b);
float add (float a,float b);
也可以是参数个数不同:
int add(int a, int b);
int add(int a, int b,int z);
典型错误:
在这里插入图片描述
注:传参的时候不能混淆
在这里插入图片描述
这种形式是错误的,因为传递参数时,一个数既可以传给int也可以传给double,这个时候就不知道调用那个函数了

带默认参数的函数

函数在声明的时候可以给定默认的参数值,调用时如果给定实参,则采用实参,否则采用预先的参数值。
在这里插入图片描述

作业

从标准输入接受整形输入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.14;
// 函数sumArea(double* radius,int n)求这n个圆的面积之和
double sumArea(double* radius,int n)
{
    double area;
    for(int i=0;i<n;i++)
    {
        area += pi*radius[i]*radius[i];
    }
    return area;
}


int main()
{
    // 接受整形输入n,动态分配储存空间为n的数组radius
    int n;
    cout<<"please input a number"<<endl;
    cin>>n;
    double* radius = new double[n];
    // 输入n个浮点数储存在radius中,这n个数代表了n个圆的半径。
    for(int i=0;i<n;i++){
        cout<<"please input R"<<endl;
        cin>>radius[i];
    }
    double allareasum = sumArea(radius,n);
    cout<<allareasum;
    cout.precision(5);
    cout<<"总面积为:"<<allareasum<<endl;
    delete[] radius;

    return 0;  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值