1.变量需要初始化
2.常量:定义不可 修改的数据
(1)宏常量:放于文件上方,如:
#define day 7
(2)const修饰变量,如:
const int day=7
3.标识符规则:除了关键字以外,区分大小写,需以字母、数字、下划线组成且字母或者下划线必须为为第一个字符
4.数据类型:
(1)整型:
short(短整型) | 2字节 | (-2^15 ~ 2^15-1) |
int(整型) | 4字节 | (-2^31 ~ 2^31-1) |
long(长整型) | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-2^31 ~ 2^31-1) |
long long(长长整形) | 8字节 | (-2^63 ~ 2^63-1) |
(2)浮点型:
float | 4字节 | 7位有效数字 |
double | 8字节 | 15-16位有效数字 |
(3)字符型:
字符型变量只占一个字节,并且是以字符对应的ASCII码储存;
A的ASCII值为65,a的ASCII值为97。如:
char a ="A";
(4)字符串:
(a)char 变量名 = " 字符串值"; 如:
char ch[ ] = "hello world!"
(b)string 变量名 = " 字符串值";用此方法需要包含<string>头文件 如:
string str = "hello world";
(5)布尔类型:
代表真和假的值:true(1)和false(0),且只占一个字节
(6)转义字符:
转义字符 | 含义 | ASCII码值(十进制) |
---|---|---|
\a | 警报 | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符"" | 092 |
' | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\? | 代表一个问号 | 063 |
\0 | 数字0 | 000 |
\ddd | 8进制转义字符,d范围0~7 | 3位8进制 |
\xhh | 16进制转义字符,h范围0~9,a~f,A~F | 3位16进制 |
5.sizeof():可以统计数据类型所占内存大小
6.数据输入:cin>> 变量;
7.数据输出:cout<<变量;
8.算数运算符:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 前置递增 | a=2; b=++a; | a=3; b=3; |
++ | 后置递增 | a=2; b=a++; | a=3; b=2; |
-- | 前置递减 | a=2; b=--a; | a=1; b=1; |
-- | 后置递减 | a=2; b=a--; | a=1; b=2; |
总结:在除法运算中,除数不能为0;只有整型变量可以进行取模运算;前置递增先对变量进行++,再计算表达式,后置递增相反
9.赋值运算符:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | a=2; b=3; | a=2; b=3; |
+= | 加等于 | a=0; a+=2; | a=2; |
-= | 减等于 | a=5; a-=3; | a=2; |
*= | 乘等于 | a=2; a*=2; | a=4; |
/= | 除等于 | a=4; a/=2; | a=2; |
%= | 模等于 | a=3; a%2; | a=1; |
10.比较运算符:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4 == 3 | 0 |
!= | 不等于 | 4 != 3 | 1 |
< | 小于 | 4 < 3 | 0 |
> | 大于 | 4 > 3 | 1 |
<= | 小于等于 | 4 <= 3 | 0 |
>= | 大于等于 | 4 >= 1 | 1 |
11.逻辑运算符:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,则!a为真; 如果a为真,则!a为假。 |
&& | 与 | a && b | 如果a和b都为真,则结果为真,否则为假。 |
|| | 或 | a || b | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 |
12.三目运算符:
2>1 ? true : false;
结果为true
13.goto语句:可以无条件跳转语句;如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
语法:goto 标记;如:
cout << "2" << endl;
goto FLAG;
cout << "3" << endl;FLAG:
cout << "4" << endl;
14.一维数组:
(1)数据类型 数组名[ 数组长度 ];
(2)数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};如果{}内不足10个数据,剩余数据用0补全
(3)数据类型 数组名[ ] = { 值1,值2 ...};
(4)一维数组名
可以用sizeof(数组名) / sizeof(数组名[0]) 统计整个数组在内存中的长度,用 (int)&数组名[0]获取数组在内存中的首地址
15.二维数组:
(1)数据类型 数组名[ 行数 ][ 列数 ];
(2)数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };如:
int arr2[2][3] =
{
{1,2,3},
{4,5,6}
};
(3)数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
(4)数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};
(a)二维数组行数:sizeof(数组名) / sizeof(数组名[0])
(b)二维数组列数:sizeof(数组名[0]) / sizeof(数组名[0][0])
(c)二维数组首地址:arr
(d)二维数组第一行地址:arr[0]
(e)二维数组第一个元素地址:&arr[0][0]
16.函数:
返回值类型 函数名 (参数列表)
{
函数体语句
return表达式
}
总结: 值传递时,形参是修饰不了实参的
17.函数调用:
函数名(参数)
18.函数的声明:
函数的声明可以有多次,但是定义只能有一次,但是函数可支持重载
19.函数的分文件编写:
(1)
创建后缀名为.h的头文件
例:
//swap.h文件
#include<iostream>
using namespace std;//实现两个数字交换的函数声明
void swap(int a, int b);
(2)
创建后缀名为.cpp的源文件
例:
//swap.cpp文件
#include "swap.h"void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
(3)
在头文件中写函数的声明
(4)
在源文件中写函数的定义
例:
//main函数文件
#include "swap.h"
int main() {int a = 100;
int b = 200;
swap(a, b);system("pause");
return 0;
}
20.指针变量定义语法: 数据类型 * 变量名;
21.指针变量和普通变量的区别:
-
普通变量存放的是数据,指针变量存放的是地址
-
指针变量可以通过" * "操作符,操作指针变量指向的内存空间,这个过程称为解引用
-
总结: 我们可以通过 & 符号 获取变量的地址
利用指针可以记录地址
对指针变量解引用,可以操作指针指向的内存
22.所有指针类型在32位操作系统下是4个字节
23.空指针:指针变量指向内存中编号为0的空间;作用:初始化指针变量;空指针指向的内存是不可以访问的
例:
int * p = NULL;
cout << *p << endl;
24.野指针:指针变量指向非法的内存空间
例:
//指针变量p指向内存地址编号为0x1100的空间
int * p = (int *)0x1100;cout << *p << endl;
总结:空指针和野指针都不是我们申请的空间。
25.常量指针,const修饰指针
例:
int a = 10;
int b = 10;//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int * p1 = &a;
p1 = &b; //正确
26.指针常量,const修饰常量
例:
//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
int a = 10;
int b = 10;int * const p2 = &a;
*p2 = 100; //正确
27.const即修饰指针,又修饰常量
例:
const int * const p3 = &a;
技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量
28.结构体:
语法:struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
-
struct 结构体名 变量名
-
struct 结构体名 变量名 = { 成员1值 , 成员2值...}
-
定义结构体时顺便创建变量
例:
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
}
总结1:定义结构体时的关键字是struct,不可省略;创建结构体变量时,关键字struct可以省略;结构体变量利用操作符 ''.'' 访问成员
29.结构体数组:
语法:struct 结构体名 数组名[元素个数] = { {} , {} , ... {} }
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
}//结构体数组
struct student arr[3]=
{
{"张三",18,80 },
{"李四",19,60 },
{"王五",20,70 }
};
30.结构体指针:通过指针访问结构体中的成员 ;利用操作符 ->
可以通过结构体指针访问结构体属性
31.结构体嵌套:
例:
//学生结构体定义
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
};//教师结构体定义
struct teacher
{
//成员列表
int id; //职工编号
string name; //教师姓名
int age; //教师年龄
struct student stu; //子结构体 学生
};