1.常量
#include<iostream>
using namespace std;
// 1.define 宏常量
#define N 50
int main(){
//N = 60; // define定义的数据为常量,一旦修改会报错
cout<<N<<endl;
//2.const 修饰的常量
const int m = 12;
//m = 24; //错误 const修饰的常量不能改变
return 0;
}
2.关键字
3.标识符命名规则
4.数据类型
原则:C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
存在意义:给变量分配合适的内存空间。
4.1 整型
4.2 sizeof关键字
作用:利用sizeof统计数据类型占用内存大小
语法:sizeof(数据类型 / 变量)
#include<iostream>
using namespace std;
int main(){
//整形: short-2 int-4 long-4 long long-8
//整形大小:short < int <= long < long long
short n = 10;
// 打印 2
cout<<"short占内存:"<<sizeof(n)<<endl;
int n1 = 12;
// 打印 4
cout<<"int占内存:"<<sizeof(n1)<<endl;
return 0;
}
4.3 实型(浮点型)
作用:用于表示小数
浮点型变量分两种:float 和 double
#include<iostream>
using namespace std;
int main(){
//1. 单精度:float
//2. 双精度:double
//默认情况下,输出小数会显示出6位有效数字
float f1 = 3.14; //不加f的话-默认f1会是双精度,
float f2 = 3.24f; //f表示为单精度
double d1 = 3.1415926;
//打印 3.14159 共6位有效数字
cout<<"d1="<<d1<<endl;
//3. float和double占用内存空间:输出分别为 4 和 8
cout<<"float:"<<sizeof(float)<<" double:"<<sizeof(double)<<endl;
//4. 科学计数法表示小数
float f3 = 3e2; //代表 3*10的2次方,结果为300
float f4 = 3e-2; //代表 3*0.1的二次方 ,结果为 0.03
return 0;
}
4.4 字符串
作用:字符串变量用于显示单个字符
语法:char ch = ‘a’;
#include<iostream>
using namespace std;
int main(){
//1. 字符型变量占用内存,输出 1
char ch = 'a';
cout<<"大小:"<<sizeof(ch)<<endl;
//2.字符型变量对应ASCII编码 输出97 ,大写A:65
cout<<(int)ch<<endl;
return 0;
}
4.5 转义字符
作用:用于表示一些不能显示出来的ASCII字符
4.6 字符串型
作用:用于表示一串字符。
#include<iostream>
using namespace std;
int main(){
//1.C风格字符串
//char +字符串名 + []
char str[] = "hello";
cout<<str<<endl;
return 0;
}
4.7 布尔类型
3 运算符
3.1 运算符
两数相除,被除数不能为0,求余也是。
两个小数不能求余。
3.2 do_while
3.3 break
break使用的时机:
1.出现在switch条件语句中,作用是终止case并跳出switch
2.出现在循环语句中,作用是跳出当前的循环语句
3.出现在嵌套循环中,跳出最近的内层循环语句
3.4 continue
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。
3.5 goto
作用:可以无条件跳转语句
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
5 数组
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1:数组中的每个数据元素都是相同的数据类型。
特点2:数组是由连续的内存位置组成的。
4.1 一维数组
4.1.1 定义方式
三种方式:
- 数据类型 数组名 [数组长度]:int a[20];
- 数据类型 数组名 [数组长度] = {值1,值2…}:int a[2] = {1,2};
- 数据类型 数组名 [ ] = {值1,值2,}:int a[] = {1,2};
4.1.2 一维数组组名
用途:
- 统计整个数组在内存长度。
- 获取数组在内存中首地址。
#include<iostream>
using namespace std;
int main(){
int arr[5] = {1,2,3,4,5};
//1.统计整个数组的占内存长度,从开始到结束;total = 20 = 5 * 4
int total = sizeof(arr);
//2.统计数组中第一个元素占内存长度: one = 4
int one = sizeof(arr[0]);
//3.计算数组中元素个数: length = 5 = 20/4
int length = sizeof(arr) / sizeof(arr[0]);
cout<<"数组首地址:"<<(int)arr<<endl;
cout<<"数组第一个元素地址:"<<(int)&arr[0]<<endl;
//数组名是常量,不可修改
//arr = 100 //错误
return 0;
}
4.2 二维数组
4.2.1 定义方式
四种:
- 数据类型 数组名 [ 行数 ] [ 列数 ]; 如 int a[2][3];
- 数据类型 数组名 [ 行数 ] [ 列数 ] = { {数据1,数据2 },{数据3,数据4}};如int a[2][2] = { {1,2},{3,4} };
- 数据类型 数组名 [ 行数 ] [ 列数 ] = {数据1,数据2,数据3,数据4 };如 int a[2][2] = {1,2,3,4};
- 数据类型 数组名 [ ] [ 列数 ] = = {数据1,数据2,数据3,数据4 };如 int a[] [2] = {1,2,3,4};定义时若初始化了数据,有列数可忽略行数。
4.2.2 数组名称
1.查看二维数组占用内存空间
2.获取二维数组首地址
#include<iostream>
using namespace std;
int main(){
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
//输出 24 = 2*3*4;int-4字节; double-8字节
cout<<"二维数组占用内存空间:"<<sizeof(arr)<<endl;
//输出 12 = 1*3*4
cout<<"二维数组第一行占内存:"<<sizeof(arr[0])<<endl;
//输出 4
cout<<"二维数组第一个元素占内存:"<<sizeof(arr[0][0])<<endl;
// 2
cout<<"二维数组几行:"<<sizeof(arr)/sizeof(arr[0])<<endl;
// 3
cout<<"二维数组几列:"<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;
cout<<"二维数组首地址:"<<(int)arr<<endl;
cout<<"二维数组第一行数据地址:"<<(int)arr[0]<<endl;
cout<<"二维数组第一行数据地址:"<<(int)&arr[0][0]<<endl;
return 0;
}
5 函数
返回值类型;函数名;参数列表;函数体语句;return表达式。
#include<iostream>
using namespace std;
//a和b为形参
int add(int a,int b){
++a;
++b;
return a+b;
}
int main(){
int a=1,b=2;
//a,b为实参 ,值传递
add(a,b);
return 0;
}
5.1 值传递
定义:函数调用时实参将数值传入给形参。
值传递时,形参发生变化不会影响传入的实参,函数体外实参值不变。
5.2 函数声明
作用:告诉编译器函数名及如何调用函数。函数的实际主题可以单独定义。
函数声明可以多次,但是函数定义只能一次。
5.3 函数分文件编写
1.创建 .h 头文件
2.创建 .cpp 源文件
3. 头文件写函数声明,源文件写函数定义
//a.h
void swap(int a,int b);
//b.cpp
#include "a.h"
void swap(int a,int b){
int t = a;a=b;b=t;
}
//c.cpp
#include "a.h"
int a=1,b=2;
//即可调用b.cpp的功能
swap(a,b);