1、基本模板
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
system("pause");
return 0;
}
2、整型数据类型
short短整型 2字节
int整型 4字节
long长整型 4字节
long long长长整型 8字节
3、字符串数据类型
在C++中可以有两种方式表示字符串
#include <iostream>
#include <string>
using namespace std;
int main()
{
//C传统方式
char str[]="I love C++";
cout<<str<<endl;
//C++字符串类型
string Str="I love C++";
//使用string类型要添加string头文件
cout<<Str<<endl;
system("pause");
return 0;
}
4、浮点数类型
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
float a = 3.14f;
/*注意float类型一般在数值后面加f,不让计算机内部就会
把3.14当作double类型,再转化为float类型
*/
double b = 3.14;
//sizeof(类型名或者是变量名)
cout << "float has " << sizeof(a) << " byte" << endl;
cout << "double has " << sizeof(double) << " byte" << endl;
system("pause");
return 0;
}
5、布尔类型
布尔类型变量为真或者假,即True和False
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
bool flag1 = true;
bool flag2 = false;
cout << "True=" << flag1 << "False=" << flag2 << endl;
system("pause");
return 0;
}
从结果可以看出,true和false其实就是1和0;true也可以是其他非0的数。
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
bool flag;
flag = 100;
cout << flag << endl;
flag = -100;
cout << flag << endl;
system("pause");
return 0;
}
6、转义字符
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
cout << "小明:" << "I love C++" << endl;
cout << "欧阳锋:" << "I love C++" << endl;
cout << "桥本环奈:" << "I love C++" << endl;
//使用制表符,制表符为8个字符
cout << endl << "小明:\t" << "I love C++" << endl;
cout << "欧阳锋:\t" << "I love C++" << endl;
cout << "桥本环奈:\t" << "I love C++" << endl;
//当制表符前面的字符个数超过8时(一个汉字两个字符长度),可以多添加几个制表符
cout << endl << "小明:\t\t" << "I love C++" << endl;
cout << "欧阳锋:\t" << "I love C++" << endl;
cout << "桥本环奈:\t" << "I love C++" << endl;
system("pause");
return 0;
}
7、除法
#include <iostream>//注意C++头文件不用加.h
using namespace std;
int main()
{
double a = 3.14322;
double b = 5;
int c = 5;
int d = 6;
cout << "int/int\t\t" << c / d << endl;
cout << "int/double\t" << c / a << endl;
cout << "double/double\t" << a / b << endl;
system("pause");
return 0;
}
8、取余
注意,在C++中,只有整数%整数,且被除数不能为0.
9、前置和后置运算符
与C语言中的一致。
10、赋值运算符
+=、-=、*=、/=、%=
11、比较运算符
==、>、<、<=、>=、!=
12、逻辑运算符
非:!
与:&&
或:||
13、程序流程结构
①选择结构:if、switch
②循环结构:while、dowhile、for
③跳转结构:continue、break、goto(一般不用)
14、数组
数组特点:①数组中的元素存放在一段连续的内存空间中②数组中的元素的数据类型相同
三种定义类型:
①int arr1[4];
②int arr2[4]={1,2,3,4};
③int arr3[]={1,2,3,4};
一维数组名的作用:
①获取数组在内存中的长度
②获取数组在内存中的首地址
#include "iostream"
#include "string"
using namespace std;
int main()
{
//数组定义
int arr[] = { 1,2,3,4,5 };
//输出数组的占用内容大小
cout << "数组的占用内存大小为:\t\t\t" << sizeof(arr) << "byte" << endl;
//输出数组的元素大小
cout << "数组元素占用的内存大小为:\t\t" << sizeof(arr[0]) << "byte" << endl;
//输出数组的元素个数
cout << "数组的元素个数为:\t\t\t" << sizeof(arr) / sizeof(arr[0]) << "byte" << endl;
//输出数组的首地址
cout << "数组的首地址为:\t\t\t" << arr << endl;
cout << "数组的首地址为:\t\t\t" << &arr[0] << endl;
//用十进制表示数组的首地址
cout << "数组的十进制首地址为:\t\t\t" << (int)arr << endl;
//int类型在地址表示中,十六进制的1相当于1个字节
cout << "arr[0]的十六进制地址:\t\t\t" << &arr[0] << endl;
cout << "arr[1]的十六进制地址:\t\t\t" << &arr[1] << endl;
//int类型在地址表示中,十进制的1相当于1个字节
cout << "arr[0]的十进制地址:\t\t\t" << (int)&arr[0] << endl;
cout << "arr[1]的十进制地址:\t\t\t" << (int)&arr[1] << endl;
//另外要注意数组名为常量,不能赋值
system("pause");
return 0;
}
#include "iostream"
#include "string"
using namespace std;
int main()
{
//实现数组的倒置
int arr[] = { 1,2,3,4,5 };
//先确定数组的起始下标和结束下标
int start = 0;
int end = sizeof(arr) / sizeof(arr[0]) - 1;
int temp;//用于暂存数据
cout << "倒置前的数组:";
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
//循环直至start>end
while (start <= end)
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
cout << endl << "倒置后的数组:";
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
#include "iostream"
#include "string"
using namespace std;
int main()
{
//--------------------实现数组元素的冒泡排序--从小到大---------------------------------
int arr[] = { 0,1,4,2,9,5,6,3,5 };
int arr_length = sizeof(arr) / sizeof(arr[0]);
int i, j, temp;
cout << "排序前的数组:";
for (int p = 0; p < arr_length; p++)
{
cout << arr[p] << " ";
}
cout << endl;
for (i = 0; i < arr_length - 1; i++)//arr_length - 1为总共需要挑选最大值的次数
{
for (j = 0; j < arr_length - 1 - i;j++)//arr_length - 1 - i为每次挑选最大值所需做的比较次数
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << "排序后的数组--从小到大:";
for (int p = 0; p < arr_length; p++)
{
cout << arr[p] << " ";
}
cout << endl;
//----------------实现数组元素的冒泡排序--从大到小-----------------------------------------------
for (i = 0; i < arr_length - 1; i++)//arr_length - 1为总共需要挑选最大值的次数
{
for (j = 0; j < arr_length - 1 - i; j++)//arr_length - 1 - i为每次挑选最大值所需做的比较次数
{
if (arr[j] < arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << "排序后的数组--从大到小:";
for (int p = 0; p < arr_length; p++)
{
cout << arr[p] << " ";
}
cout << endl;
system("pause");
return 0;
}
二维数组:
#include "iostream"
#include "string"
using namespace std;
int main()
{
//二维数组的四种定义方式
int arr1[2][3];
int arr1[2][3] = { {1,2,3} ,{4,5,6 } };//常用
int arr1[2][3] = { 1,2,3,4,5,6 };
int arr1[][3] = { 1,2,3,4,5,6 };
system("pause");
return 0;
}
#include "iostream"
#include "string"
using namespace std;
int main()
{
int arr[2][3] =
{
{1,2,3} ,
{4,5,6}
};
//获取二维数组所占内存空间大小
cout << "二维数组所占内存空间大小为:" << sizeof(arr) << "byte" << endl;
cout << "二维数组第一行所占内存空间大小为:" << sizeof(arr[0]) << "byte" << endl;
cout << "二维数组第一个元素所占内存空间大小为:" << sizeof(arr[0][0]) << "byte" << endl;
cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
system("pause");
return 0;
}
15、指针
#include "iostream"
#include "string"
using namespace std;
int main()
{
int a=10;
int *p = &a;
cout << "指针p的内容为:" << p << endl;
cout << "指针p所指向的内容为:" << *p << endl;
//在X86环境下,指针变量大小为4个字节;在X64环境下,指针变量大小为8个字节
cout << "int指针变量大小:" << sizeof(p) << "byte"<<endl;
cout << "double指针变量大小:" << sizeof(double*) << "byte" << endl;
cout << "float指针变量大小:" << sizeof(float*) << "byte" << endl;
system("pause");
return 0;
}
#include "iostream"
#include "string"
using namespace std;
int main()
{
/*
①常量指针:即指针指向一个常量,所以*p不可以改变,但p可以改变
②指针常量:即指针是一个常量,所以p不可以改变,但是*p可以改变
③const既修饰指针又修饰变量,所以p和*p都不可以改变
*/
int a = 10;
int b = 10;
//常量指针
const int *p1 = &a;
*p1 = 20;//错误
p1 = &b;//正确
//指针常量
int * const p2 = &a;
*p2 = 20;//正确
p2 = &b;//错误
//const既修饰指针又修饰变量
const int * const p3 = &a;
*p3 = 20;//错误
p3 = &b;//错误
system("pause");
return 0;
}
16、结构体数组
#include "iostream"
#include "string"
using namespace std;
struct student
{
string name;
int age;
int score;
};
int main()
{
student arr[3] =
{
{"张三",10,20},
{"李四",11,30},
{"王五",11,100}
};
int length = sizeof(arr) / sizeof(arr[0]);
arr[2].age = 10;
for (int i = 0; i < length; i++)
{
cout << "名字:" << arr[i].name << " 年龄:" << arr[i].age << " 分数:" << arr[i].score << endl;
}
system("pause");
return 0;
}
17、结构体指针
#include "iostream"
#include "string"
using namespace std;
struct student
{
string name;
int age;
int score;
};
int main()
{
student arr[3] =
{
{"张三",10,20},
{"李四",11,30},
{"王五",11,100}
};
student *p = arr;
int length = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < length; i++,p++)
{
cout << "名字:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;
}
system("pause");
return 0;
}