c++ 每个可执行程序有且仅有一个main函数,即程序入口。
返回值:return 0;
注释:// /* */
目录
设置文档
- 每个类的声明写在一个头文件中,.h为后缀
#ifndef CLASSNAME
#def CLASSNAME
类的声明
#endif
- 类的实现在对应的.cpp文件中
#include "classname" //添加类声明
- 将函数的声明与常数的声明写在一个文件,函数的具体实现放在对应的.cpp文件
- 文件中使用函数和类时,只需引用声明的头文件即可\
基础的输入输出
输出:cout<<"请输入:"; //将 "请输入:" 输出给<<左边对象
std::cout<<"请输入两个数字"<<std::endl;
//等价于
std::cout<<"请输入两个数字";
std::cout<<std::endl;
输入:cin>>x; //将接受的输入放到>>右边对象即x中
int a,b;
std::cin>>a>>b;
输出两数之和
std::cout<<"两个数字之和"<<a<<"and"<<b
<<"is"<<a+b<<std::endl;
cerr:标准错误,输出警告和错误信息
clog:产生程序执行的信息
标识符
为变量,函数,类等起的名称。
字母或下划线开头,区分大小写
函数,类:大写开头 变量:小写开头 常量:全大写 全局变量:g_ (global)
注意c++的保留字
数据类型
-
数字型
int(4) char(1) float(4) double(8) // 1 byte = 8 bit
-
逻辑运算符
&& || !(单目)
-
字符型与字符串
普通字符 char(1)
转义字符 “\”开头 \': 单引号 \":双引号 \\: 斜杠 \a:响铃 \b:后退 \n: 换行 \r:回车 \t: 制表 \v:垂直制表 \xnnn: 16进制
字符串使用字符数组完成处理。字符数组长度固定。
字符数组处理串时,长度+1:结束符\0
static char city[9] = ("c","h","a","n","g","s","h","a","n","g","h","a","i","\0")
char *tmp1;
string tmp2;
tmp2 = tmp2.insert(0,tmp1); //字符数组转为字符串
strcpy(tmp1,tmp2.c_str(),tmp2.length()); //字符串转为数组
-
指针
指针是“地址”----常量,指针变量是取值为地址的变量。
<type> *<var1> int *ip;
* :表示访问指针所指向的内存单元的内容 & :取出变量的内容,即地址
*p = const; //const赋给p所指向的单元
*p = var; //var的值赋给p所指向的单元
var = *p; //p所指向的单元的内容赋给var
指针地址初始化 char *aa = mm //使用已有指针地址mm
变量地址初始化 char bb; char *aa = &bb //将bb的地址付给aa
分配内存单元 new 指针 = new <type>; delete 指针;//释放指针的内存单元
动态分配内存malloc() <type> *p = (type *)malloc(sizeof(type)*n); free p;//释放
判断指针大小 sizeof() void *p; 无类型指针,不分配内存。 空指针p=NULL (/ 0);
引用 type &ref = var;//ref是var的别名,没有开辟新空间,使用方式同指针
-
数组
type name[x];//x:数字个数,0-----x-1
高级数组 int Array[5][10]; //一个包含5个元素的数组,每个元素包含10个数字
数组名指向该连续单元的首地址,所以数组名是指向该数组的第一个元素的指针
int *ptr = Array; //ptr指向数组Array的首地址,指向数组的指针
指针数组:一个数组,元素类型为指针; int *p[4];
-
枚举
枚举 :enum <类型名> {<类型表>}
enum color{red,yellow,blue};
color c1,c2;
c1 = red;
-
结构体
struct name{ struct employee{
type var1; short id;
type var2; std::string name;
}; };
name one; employee e1; e1={40,"Charles"};
e1.id = 40;
e1.name = "Charles";
创建一个指向结构的指针 employee *em = &e1; //em的类型是employee,赋值为e1的地址,em->id = 41;
-
联合
union pet{
std::string name;
short id;
}; //只保存变量的一个值
-
自定义的类型
- typedef int COUNT: //使用基本数据类型定义新的有意义名称
- 简化结构体定义
- 简洁定义固定的数组
struct name{ typedef struct name{
type var1; type var1;
type var2; type var2;
}; };
struct name one; name one;
变量
向编译器声明自己的存在,并且为自身分配所需空间。
type var1 [ =value 1 ]
extern type var1 [ =value 1 ] //仅仅声明变量,不分配存储空间
作用域 | 变量 | 位置 |
局部 | 局部 | 函数内声明 |
全局 | 全局 | 函数外声明 ::(限定符),访问同名全局变量 |
文件 | 全局 | static ::(限定符) |
常量
书写规则:#define _MAX 或是 const
单引号:字符(如'/125'表示字符U) 双引号:字符串 面向过程:
详细写出具体过程。如:五子棋游戏。
开始 --> 黑子 --> 图画 --> 输赢 --> 白子 --> 图画 --> 输赢 --> 返回黑子 --> 最后
面向对象:
将属性与方法封装成类,实例化对象,对象调用类中方法实现需要的操作。如:五子棋游戏。
1)黑白双方玩家:行为一致;
2)系统画面绘制;
3)规则系统:输赢,犯规。
三个对象:玩家(接收输入)--> 告诉画面对象显示新输入 --> 规则进行判断,重复。