嘉明的C++学习(1)
C++的语言基础
C++的输入
cin是输入流对象,代表标准输入设备,一般指键盘 , >>代表将从流入对象(键盘)读取的数值传达给右边的变量
C++的输出
标准输出流对象cout, <<在 C++中保持左移的功能,允许连续输出多数据,也可以输出表达式的值
注意:在使用cin与cout之前,一定要加上箭头指向的两个语句。
#include
using namespace std;
std::是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准库中的函数或者对象都要用std来限定。
代码如下:
#include<iostream>
using namespace std;
int main(){
int i = 10;
cout << "i = " << i<< '\n';
return 0;
}
结果
内联函数
内联函数用于简单的程序运行有很大帮助,其可以省略繁琐的调用步骤和过程,争取让程序做到一步到位。
例如你要去过一个有河的岸,可能你需要乘车去岸边然后再乘船再乘车,这就好比函数调用过程,繁琐且枯燥,但是这时你有了直升飞机(比作内联函数),你就可以直接过去,省略繁琐的过程。
但如果你去的途中有很多东西要拿(比作程序的复杂程度),直升机不能承受那么多重量,所以你也只能依靠货车和轮船(比作繁琐的调用过程)来完成了。
这样就比较容易理解内联函数的作用了。
内联函数具有一般函数的特性,它与一般函数所不同之处只在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换。在使用内联函数时,应注意如下几点:
1.在内联函数内不允许用循环语句和开关语句。如果内联函数有这些语句,则编译将该函数视同普通函数那样产生函数调用代码,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数只适合于只有1~5行的小函数。对一个含有许多语句的大函数,函数调用和返回的开销相对来说微不足道,所以也没有必要用内联函数实现。
2.内联函数的定义必须出现在内联函数第一次被调用之前。
3.类结构中所有在类说明内部定义的函数是内联函数。
#include<iostream>
using namespace std;
inline double circle(double r){
return 3.1415*r*r//return后面的部分就为函数体;
}
int main(){
double area;
double r;
cout << "请赋予圆半径r:"<<endl;
cin >> r;
area = circle(r);
cout<<"r = "<< r << endl << "area = " << area <<endl;
return 0;
}
结果
endl的作用是换行
可以插入到输出流中,效果为在输出结果中插入换行符’\n’。
函数重载
代码举例子说明:
#include<iostream>
using namespace std;
void sum(int x){
cout << "该数据类型为int" << endl << "----------"<< endl;
}
void sum(double x){
cout << "该数据类型为double" << endl<< "----------" << endl;
}
void sum(char x){
cout << "该数据类型为char" << endl;
}
int main(){
int x = 2;
cout<< "x = " << x << endl;
sum(x);
double y = 3.14;
cout<< "y = " << y << endl;
sum(y);
char z = 'a';
cout<< "z = " << z << endl;
sum(z);
cout<<endl;
return 0;
}
new与delete
比如定义了一个指针int *p
这时 p = new int ,new运算符就为指针p开辟了一个int类型的储存区,并且将首地址赋值给p,即返回申请空间的地址
但如果不满足内存分配要求,new将返回一个null值
delete运算符,用于释放空间,提高内存利用率
注!:如果delete释放的是数组必须在指针名前加[],否则释放内存不够完整,不利于内存利用率
比如 delete []s;
#include<iostream>
using namespace std;
int main(){
int *p;
p = new int[5];
for(int i = 0; i<5 ; i++)
p[i] = 20 + i*5;
for(int j = 0; j<5 ; j++)
cout << "p[" << j << "] = " << p[j] <<endl;
delete []p;
cout << "释放内存后p[1] = " << p[1] << endl;
return 0;
}
结果:
这就是new 与 delete 的功能