输入输出
输入: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;
}