(1)注释:
单行注释://注释内容
多行注释:/注释内容/
(2)变量:
作用:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
(3)常量:
作用:用于记录程序中不可更改的数据
两种方式:
#define 常量名 常量值
const 数据类型 常量名 常量值
(4)标识符(变量,常量)命名规则:
一:不能是关键字
二:标识符只能由字母,数字,下划线
三:第一个字符只能是字母与下划线
四:标识符是区分大小写的,对大小写敏感
(5)数据类型:
一:整型:
short短整型:占2个字节
int整型:4个字节
long长整型:window为4字节, linux中32位的为4字节,64位为8字节
long long 长长整型:8字节
二:sizeof关键字:
作用:用于查看该数据类型占内存大小
语法:sizeof(数据类型或者变量名)
三:浮点型:
单精度:float 占4个字节
双精度:double 占8个字节
四:字符型:
作用:字符型变量用于显示单个字符,只占一个字节
注意:字符型变量不是字符本身存储到内存中,而是将对应的ASCII编码放入到存储单元中。 是单引号,里面只有一个字符
语法:char ch = 'a';
五:转义字符:
\n 换行符,将当前位置移到下一行开头
\t 水平指标符,相当于 tab键
\ 代表一个\字符
六:字符串:
语法:
c风格: char 变量名[] = "字符串值"
c++风格: string 变量名= “字符串值”
七:布尔类型
true ,false
八:数据的输入
关键字:cin
语法:cin >> 变量名
程序执行时,会叫你输入一个值,这个值会给这个变量
(6)运算符:
加减乘除,取模%,赋值运算符,比较运算符 == !=, >=等等,
逻辑运算符: &&与,||或, !非
前置递增与后置递增:
前置递增:a=2 ,b=++a a =3,b=3
后置递增:a=2,b=a++ a=3,b=2
还有前置递减,后置递减,一样
(7)程序结构:
三种基本程序结构:顺序结构,选择结构,循环结构
一:选择结构:
if :
单行:
语法:if (条件){执行体}
多行:
if(条件){执行体}else{执行体}
多条件:
if(条件1)else if (条件2)else if (条件3) ..else(执行体)
嵌套if语句:if里面有if
switch:
switch(表达式)
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;
case 结果3:执行语句;break;
...
default:执行语句;break;
}
解释:看表达式的结果走那边,如果都没有,走default语句。
二:循环语句
while:
语法:while(条件){执行体}
解释:如果循环条件为真,就走执行体
dowhile:
do{执行体}while(循环条件);
解释:与while 区别在于 do ..while 会先执行一次循环。
for:
for(起始表达式;条件表达式;末尾循环体){执行体;}
二:循环结构:
(8)三目运算符:
表达式1?表达式2:表达式3
解释:如果表达式1值为真,执行表达式2,返回表达式2的值
如果表达式1值为真,执行表达式3,返回表达式3的值
(9)break:
作用:跳出选择结构或者循环结构
使用时机:
一:出现switch条件语句时,后面case语句写break,
二:出现在循环语句中,作用是跳出当前循环语句
三:出现在嵌套语句中,跳出最近的内层循环语句
(10)continue:
作用:在循环语句中,跳出本次循环中余下尚未执行的语句,继续执行下一场循环。
(11)goto:
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
(12)数组:
含义:所谓数组,就是一个集合,里面存放了相同类型的数据元素。
特点1:数组里面的元素都一个数据类型。
特点2:数组是由连续的内存位置组成的。
一:一维数组
定义方法:
数据类型 数组名 [数组长度] ;
数据类型 数组名 [数组长度] ={值1,值2,值3 ,,,};
数据类型 数组名[] ={值1,值2,值3 ,,,};
或者单个赋值:
数组名[下标] = 值
二:二维数组
定义方式:
数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};
数据类型 数组名[行数][列数]={数据1,数据2,数据3,数据4};
数据类型 数组名[][列数]={数据1,数据2,数据3,数据4}
建议使用第二种,更直观
例如: int arr[2][3]={
{1,2,3},
{4,5,6}
}
查看二维数组的首地址:(int)arr
查看二维数组第一行首地址为:(int)arr[0]
(13)函数:
一:语法:
返回值类型 函数名 (参数列表)
{
函数体语句;
return表达式
}
二:调用
函数名 (参数)
三:函数的声明:
作用:告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义
注意:函数的声明可以多次,但是函数的定义只能一次
声明就是:只有 返回值类型 函数名字 (参数),没有执行体而已
四: 函数的分文件编写
作用:让代码结构更加清晰
函数分文件写一般4个步骤:
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
5.在源文件中导入头文件 #include " " 放在双引号里面
(14)指针
指针的作用:可以通过指针间接访问内存
内存的编号是从0开始记录的,一般用十六进制数字表示
可以利用指针变量保存地址
可以简单理解为 指针就是地址
一:定义语法: 数据类型 *变量名;
例子:
int a = 1;
int *p;
p = &a;
解释:定义一个变量a,再定义一个指针p,让指针p去值a的地址。 &取址符号
p=&a=一个十六进制数字
二:使用指针:可以通过解引用的方式来找到指针指向的内存 ,即指针前加,(p)
*p=1
三:指针所占内存空间
指针也是一种数据类型,32位操作系统,指针占4个字节。64位占8个字节
四:空指针
定义:指针变量指向内存中编号为0的指针
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
(自己理解的:内存是放数据的,访问内存就是读数据)
0~255之间的内存编号是系统占用的,是不可以访问的。
例如:int *p=NULL;
五:野指针
指针变量指向非法的内存空间
六:const修饰指针
const修饰指针有三种情况:
const修饰指针----常量指针
const修饰常量----指针常量
const既修饰指针又修饰常量
常量指针:const int *p=&a;
特点:指针的指向可以修改,但是指针的值不能修改
指针常量:
int * const p = &a;
特点:指针的指向不可以改, 指针指向的值可以改
既修饰指针又修饰常量:
const int * const p =&a;
特点:指针的指向与指向的值都不可以改。
(15)指针与数组的配合使用:
目的:利用指针访问数组的元素
数组名就是数组的首地址
int *p = arr;//arr就是数组的首地址
cout << p ; //访问第一个元素
p++;
cout <<p; //访问第二个元素
(16)指针与函数:
作用:利用指针作函数参数,可以修改实参的值
(17)利用指针,数组,函数构造一个冒泡排序:
(18)结构体:
概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
语法: struct 结构体名 {结构体成员列表};
通过结构体变量的方式有三种:
struct 结构体名 变量名;
struct 结构体名 变量名 = {成员1值,成员2值...} // 推荐
定义结构体时顺便创建变量