文章目录
参考资料来自:https://blog.csdn.net/alvanchen/article/details/5744457
http://c.biancheng.net/view/2193.html
前言
两年前学的C++,由于最近都在使用Python,导致C++几乎已经遗忘。为了将来的实习和求职,笔者决定快速复习C++基础知识,本节主要复习基础语句与符号。
一、基础知识
1.头文件与命名空间
#include <iostream>
using namespace std;
int main(){
return 0;
}
2.输入输出
C++的输入输出形式如下:
cin>>:输入
cout<<:输出
int main(){
int x;
float y;
cin>>x>>y;
cout<<"The integer number is x="<<x<<endl;
cout<<"The float number is y="<<y<<endl;
return 0;
}
也可沿用C语言的输入输出,速度比cin和cout快。
scanf_s():输入
printf():输出
int main(){
int a;
scanf_s("%d", &a); //注意:scanf_s需要指针变量,因此读取&a
int b = a + 1;
printf("%d\n", b);
return 0;
}
3.循环语句
(1)for
测试一个for循环实现求和函数
int SUM(int n){
int total = 0;
for(int i=1; i<=n; i++){
total += i;
}
return total;
}
int main(){
int n;
cin>>n;
cout<<"total="<<SUM(n)<<endl;
return 0;
}
(2)while
condition1和condition2分别指循环继续的条件和跳出循环的条件。
while(condition1){
if(condition2){
break;
}
}
(3)do while
do{
if(condition2){
break;
}
}while(condition1)
4.switch语句
可把switch当作一种条件执行语句。注意,每一个case后要加break,否则会一直运行下去。
int main(){
char grade = 'C';
switch(grade){
case 'A':
cout<<"great!"<<endl;
break;
case 'B':
cout<<"nice!"<<endl;
break;
case 'C':
cout<<"pass!"<<endl;
break;
default:
cout<<"fail!"<<endl;
}
return 0;
}
二、基本符号
1.运算符
运算符名称 | 符号 |
---|---|
取模 | % |
逻辑与 | && |
逻辑或 | || |
逻辑非 | ! |
条件表达式 | (x>y)?x:y |
按位与 | & |
按位或 | | |
按位非 | ~ |
按位左移、右移 | <<, >> |
2.指针
指针变量是c++语言中的特色。
int main(){
int var = 20;
int* ip; //声明指针变量
ip = &var; //指针变量中存储var地址
cout<<ip<<endl; //ip的值是指针存储的地址
cout<<*ip<<endl; //*ip的值是指针存储的内容,即var
return 0;
}
3.引用
引用符&和取地址符&一样。引用即给某个变量取个别名。
int main(){
int i = 10;
int& r = i; //为i声明引用变量
cout<<"i:"<<i<<"r:"<<r<<endl;
r += 1;
cout<<"i"<<i<<"r"<<r<<endl;
return 0;
}
运行完以上代码,发现输出的i和r值一样,且在引用变量r改变时,i也随之改变。
4.new和delete
new动态分配内存,delete释放内存
int* p = new int; //分配一个int型内存空间
delete p; //释放内存
int* p = new int[10]; //分配一个int型数组空间,大小为10
delete[] p; //释放内存
5.const
常量指针:该指针指向一个常量,指针指向的地址里的内容不可修改,但指向的地址可修改。
int a, b;
const int*p=&a; //常量指针,将a的地址赋予指针p,使指针p指向a
*p = 1; //报错,不可修改地址里的内容
p = &b; //不报错,可修改指向的地址
指针常量:指针指向的地址不能修改,但该地址里的内容可以修改。
int a, b;
int* const p = &a; //指针常量
*p = 1; //不报错,可修改地址里的内容
p = &b; //报错,不可修改指向的地址
指向常量的指针常量:指针指向的地址和地址内容均不可修改。
const int* const p;
三、函数
1.内联函数
消除函数调用的时空开销,C++ 提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,这种在函数调用处直接嵌入函数体的函数称为内联函数。
注意:需要在函数定义时加inline,表示内联函数。仅在函数声明时无效。
inline int SUM(int n) {
int total = 0;
for (int i = 1; i <= n; i++) {
total += i;
}
return total;
}
int main(){
int n;
cin>>n;
cout<<"total="<<SUM(n)<<endl;
return 0;
}
2.默认参数
若给参数添加默认值,一定要将次参数放在无默认值的参数后面,否则报错。
void func(int a, int b=10){}
void func(int a=10, int b){} //报错
3.重载函数
c++允许多个函数拥有相同的名字,只要参数列表不同(参数类型不同或参数个数不同)即可。
int ADD(int a, int b) {
cout << "1" << endl;
return (a + b);
}
int ADD(float a, float b) {
cout << "2" << endl;
return (a + b);
}
float ADD(int a, float b) {
cout << "3" << endl;
return (a + b);
}
int main() {
int a1 = 1;
int b1 = 2;
float a2 = 1.2;
float b2 = 1.1;
cout << "total=" << ADD(a1, b1) << endl;
cout << "total=" << ADD(a2, b2) << endl;
cout << "total=" << ADD(a1, b2) << endl;
return 0;
}
注意:同一函数名且参数完全相同时,返回值类型要相同,否则算重定义报错。
int ADD(int a, int b);
float ADD(int a, int b); //重定义报错
四.总结
后续将重点对类和对象部分的编程进行复习。