1、C++的数据类型:
[1].7种基本类型(bool,char,int,float,double,void,wchar_t)
[2].可以用typeof关键字为已有的类型取一个新的名字:
typedef int feet; //feet是int的另一个名称。
[3].枚举类型
//语法:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数], ...
标识符[=整型常数]} 枚举变量;
//举例
enum color { red, green, blue } c;
c = blue;
2、c++注释: // /*...*/
3、C++变量的声明和定义:
extern int a, b;// 变量声明
extern int c;
extern float f;
int main () {
int a, b; int c; float f; // 变量定义
a = 10; b = 20; c = a + b; // 实际初始化
cout << c << endl ;
f = 70.0/3.0;
cout << f << endl ;
return 0;
}
- 根据变量的作用域分为:局部变量,全局变量
- 常量的定义:使用 #define 预处理器和使用 const 关键字
- C++存储类型(auto,static,register,extern)
①auto:函数中的局部变量,动态的分配存储空间,数据存储在动态存储区(栈区)中。
②static:静态变量。
③register:寄存器变量
④extern:用来声明外部变量和外部函数(和static一种用法相对),extern只是声明而不是定义
4、c++运算符:
①算术运算符:+ ,-,*,/,%,++,--
②关系运算符:==,!=,>,<,>=,<=
③逻辑运算符:&&,||,|
④位运算符:&,|,^,~,<<,>>
⑤赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,!=
⑥sizeof(), Condition ? X : Y, 三目运算,
⑦指针运算符:&:返回变量的地址。 *:指向一个变量。
5、流程控制语句:
①while循环、for循环、do...while循环、嵌套循环、
break、continue:区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。
goto:将控制转移到被标记的语句
②if、if...else、switch 、三目运算等判断语句
6、c++函数
①主函数main()、
②函数定义与调用:
return_type function_name( parameter list ) {
body of the function
}
③函数传参方式:
传值调用:void swap(int x, int y){}//函数的定义
swap(a, b);//函数的调用
指针调用:把参数的地址复制给形式参数
void swap(int *x, int *y){} //定义函数
swap(&a, &b); //调用函数
引用调用:把引用的地址复制给形式参数
④c++常用函数库:数学函数 <cmath>、时间函数<ctime>、字符串函数<cstring>
7、数组
double balance[10];//数组声明 int n[ 10 ]; // n 是一个包含 10 个整数的数组
//数组初始化
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
balance[4] = 50.0;//元素赋值
//多维数组
type arrayName [ x ][ y ]; //多维数组声明
int a[3][4] = { //初始化多维数组
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
指向数组指针
double runoobAarray[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; //定义数组
double *p;//定义指针
p = runoobAarray; // 把数组赋值给指针
for ( int i = 0; i < 5; i++ ) {
cout << *(p + i) << endl; //通过指针,输出数组。
}
C++中数组作为参数:
定义函数:
double getAverage(int arr[], int size) {
int i, sum = 0;
double avg;
for (i = 0; i < size; ++i) {
sum += arr[i];
}
avg = double(sum) / size;
return avg;
}
主函数
#include <iostream>
using namespace std;
// 函数声明
double getAverage(int arr[], int size);
int main () {
// 带有 5 个元素的整型数组
int balance[5] = {1000, 2, 3, 17, 50};
double avg; // 传递一个指向数组的指针作为参数
avg = getAverage( balance, 5 ) ;
// 输出返回值
cout << "平均值是:" << avg << endl;
return 0;
}
8、c++基本输入输出
- 标准输出流(cout)是iostream类的实例,cout 是与流插入运算符 << 结合使用的
#include <iostream>
using namespace std;
int main( ) {
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl; //endl 用于在行末添加一个换行符
}
//输出结果:Value of str is : Hello C++
- 标准输入流cin 是与流提取运算符 >> 结合使用的
#include <iostream>
using namespace std;
int main( ) {
char name[50];
cout << "请输入您的名称: ";
cin >> name; //会提示用户输入名称。当用户输入一个值,并按回车键,
cout << "您的名称是: " << name << endl;
}
/*
输出结果:
请输入您的名称: cplusplus
您的名称是: cplusplus
*/
流提取运算符 >> 在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:
cin >> name >> age;
这相当于下面两个语句:
cin >> name;
cin >> age;
- 标准错误流
cerr 是 iostream 类的一个实例。cerr 对象附属到标准错误设备,通常也是显示屏,但是 cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。
char str[] = "Unable to read....";
cerr << "Error message : " << str << endl;
- 标准日志流
clog 是 iostream 类的一个实例,但是 clog 对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。
char str[] = "Unable to read....";
clog << "Error message : " << str << endl;
9、C++引用
①引用变量是某个已存在变量的另一个名字,
引用很容易与指针混淆,它们之间有三个主要的不同:
[1]不存在空引用。引用必须连接到一块合法的内存。
[2]一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
[3]引用必须在创建时被初始化。指针可以在任何时间被初始化。
int& r = i;//未i声明引用变量。r 是一个初始化为 i 的整型引用"
double& s = d; // "s 是一个初始化为 d 的 double 型引用"
②把引用作为参数
void swap(int& x, int& y){}; //函数的定义
swap(a, b)//函数的调用
10、结构类型数据
结构:存储不同类型的数据项。
struct type_name {
member_type1
member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names; /定义一个结构
访问:使用成员访问运算符(.)
11、c++指针
[1].定义与声明
指针是一个变量,其值为另一个变量的地址,即指针是一个用数值表示的地址
type *var-name; int *ip; double *dp; //指针声明:
ip = &var; // 在指针变量中存储 var 的地址
cout << ip << endl; // 输出在指针变量中存储的地址
cout << *ip << endl; // 访问指针中地址的值
[2].null指针:在变量声明的时候,没有确切的地址可以赋值,为指针变量赋一个 NULL 值
int *ptr = NULL; cout << "ptr 的值是 " << ptr ; // ptr 的值是 0(地址值)
[3].指针的算术运算:指针是一个用数值表示的地址,可以进行四种算术运算:++、--、+、-
++:递增指针,顺序访问数组中的每一个元素
--:递减指针,即把值减去其数据类型的字节数
[4].指针与数组:一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。
// 指针中的数组地址
int var[MAX] = {10, 100, 200};
int *ptr;
ptr = var; // 指针中的数组地址
for (int i = 0; i < MAX; i++) {
cout << ptr << endl;
cout << *ptr << endl;
ptr++; // 移动到下一个位置
}