C++基础入门-上

C++基础入门[上]

第一章 初识C++

1.第一个C++程序

/*include:引入库文件并替换
	namespace:命名空间 
	main:主函数 程序的入口
	():函数固定写法,可以放参数 
	int:函数的返回值类型
	{}:函数主体
	;程序语句的分割
	cout:输出语句
	endl:换行语句
	return:函数返回结果 
*/ 
#include<iostream>
using namespace std;
int main(){
   
	cout<<"hello world"<<endl;
	return 0; 
}

2.C++程序编译过程及原理

  • 编译过程
  • 预编译
    展开头文件、宏定义;#define #ifdef #include;若有.h文件,也会包含进来。
  • 编译
    已经预编译的文件编译成汇编代码的过程,整个过程包括语法、词法的分析,和一些优化操作。
  • 汇编
    变成目标代码,二进制文件。
  • 链接
    将单个编译后的文件链接成一个可运行文件。
  • 过程框图
    过程框图

3.C++能做什么

  • 设备驱动程序
  • 操作系统领域
  • 科学计算
  • 嵌入式领域
  • 游戏开发领域
  • 虚拟现实
  • 网络软件

第二章 C++基础语法

1.注释的好处

被注释的代码不会被执行,编译器也不会进行编译

  • 提高代码的可读性
  • 方便调试代码
  • 禁止无关程序执行

单行注释

//我是单行注释

多行注释

/*
我是注释不会被编译
多行注释
*/

2.C++基础梳理

  • 表达式
    某个动作称之为表达式
    比如:int a=10; int b=20; int c=a+b
  • 语句
    以分号结尾的表达式称之为语句
    int a=10;
    int b=20;
    int c=a+b;
  • 标识符
    上面的a、b、c称之为标识符。它定义了计算机内存的一块区域,与名称相关联。10、20为常量
  • 赋值
    int a=10;其中a=10为赋值语句,把10赋值给a相关的区域。
  • 入口函数
    C++程序从main()函数的第一条语句开始执行
  • 函数
    函数由四部分组成 返回类型 函数名 参数表 以及函数体 前三部分合起来称为函数原型。参数表由小括号括起来 包含一个或多个由逗号分开的参数 函数体由一对花括号括起来,由程序语句序列构成。
  • 输出函数
    输出内容,cout<<""<<endl;

3.C++必知必会

  • void
    无值型,void类型其实是一种用于语法性的类型,而不是数据类型,主要用于作为函数的参数或返回值,或者定义void指针,表示一种未知类型。
    func(void);
    在c++中如果参数列表为空,默认的参数类型即为void,但建议没有参数时使用void以提高程序的可读性。
#include<iostream>
using namespace std;
int main(void){
   
	cout<<"hello world"<<endl;
	return 0; 
}
  • 头文件
    abc.h 可以声明变量和函数,让多个.cpp文件引用代码
  • 源文件
    abc.cpp 写业务逻辑的文件
  • #include
    #include 是预处理器指示符它把iostream的内容读入我们的文本文件中。iostream是输入输出流库标准文件,包含cout的信息,它对我们的程序是必需的。预处理指示符用#号标识。
  • namespace
    命名空间,减少和避免命名冲突,指的是标识符的可见范围。using namespace std;using指示符告诉编译器要使用在命名空间std中声明的名字。

4.C++头文件的作用

  • 一般在头文件中,只声明函数和变量,而不进行定义
  • 声明: extern int a;和int f();
  • 定义:如果写上int a;或者int f(){}
    例子如下:
//abc.h
#include<iostream>
using namespace std;
/*
声明工作能力
*/
int work();
 
//work.cpp 
#include "abc.h"
int work(){
   
	cout<<"在学校";
	return 0;
}
//main.cpp
#include "abc.h"
#include<iostream>
using namespace std;
int main(void){
   
	work();
	cout<<"学习"; 
	return 0;
}

5.输入输出初探

C++的输入/输出功能由输入/输出流iostream 库提供,所以要使用输入输出必须添加头文件#include< iostream >

  • 输出 cout
    输出操作符:<<
    语法:cout<<表达式1<<表达式2<<表达式3…表达式n;
  • 换行符 endl
  • 输入 cin
    输入操作符:>>
    语法:cin>>变量1>>变量2…变量n;
    示例:
#include<iostream>
using namespace std;
/* 
endl为换行符 
*/
int main(void){
   
	cout<<"hello 你好"<<endl; 
	
	//声明一个变量存储空间 
	int x; 
	
	cout<<"请输入内容:"<<endl;
	
	//输入内容存储到x中去 
	cin>>x;
	
	//取出存好的数据 
	cout<<"取到x:"<<x<<endl;
	return 0;
	}

第三章 C++数据类型

1.进制基本介绍

进制就是进位计数制,对于任何一种进制X进制,就表示每一位置上的数运算时都是逢X进一位。十进制就是逢十进一,十六进制就是逢十六进一,以此类推,X进制就是逢X进位。
常见进制

  • 二进制
    由两个数码0、1组成,二进制数运算规律是逢二进一。
    二进制
  • 八进制
    一种以8为基数的计数法,逢八进一。O代表八进制
    八进制
  • 十进制
    满十进一
  • 十六进制
    十六进制在数学中是一种逢16进1的进位制。一般由数字0到9和字母A到F(a~ f)表示,其中:A~F表示10 ~15,这些称作十六进制数字。
    例:0x5A3 其中“x”则代表十六进制

2.原码反码补码

  • 原码
    ⑴原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值,比如8位二进制:
    [+1]原=00000001
    [-1]原=10000001
    ⑵原码是人脑最容易理解和计算的表示方式

  • 反码
    ⑴ 正数的反码是其本身
    ⑵ 负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
    [+1]=[00000001]原=[00000001]反
    [-1]=[10000001]原=[11111110]反
    ⑶ 可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转换成原码再计算。

  • 补码
    ⑴ 正数的补码就是其本身
    ⑵ 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)
    [+1]=[00000001]原=[00000001]反=[00000001]补
    [-1]=[10000001]原=[11111110]反=[11111111]补
    ⑶ 对于负数,补码表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码再计算其数值

  • 转换
    ⑴ 已知原码求补码
    X为负数。求其反码时,符号位不变,数值部分按位取反;求其补码时,再在其反码的末位加1.
    X的原码为10110100B
    [X]反=11001011B,[X]补=11001100B
    ⑵ 已知补码,求原码
    对 二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法。
    已知[X]补=11101100,求[X]原。[X]原=10010100

3.基本数据类型之整型

即整数类型

  • 分类
    按符号分有符号和无符号
    按长度分普通整型、短整型、长整型
  • 整型类别
    整型类别
  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	cout<<"int:"<<sizeof(int)<<endl;
	cout<<"unsigned int:"<<sizeof(unsigned int)<<endl;
	cout<<"short int:"<<sizeof(short int)<<endl;
	cout<<"unsigned short int:"<<sizeof(unsigned short int)<<endl;
	cout<<"long int:"<<sizeof(long int)<<endl;
	cout<<"unsigned long int:"<<sizeof(unsigned long int)<<endl;
	return 0;
}

代码结果

4.基本数据类型之单浮点型

  • 浮点型
    单精度
    双精度
    长双精度
  • 单精度
    float x=2.59f
    使用关键字float,后面要添加f,内存占4个字节。
    注意:一定要在后面添加f否则默认是双精度
  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	float x=2.59f;
	cout<<"float:"<<sizeof(float)<<",x:"<<x<<endl;
	return 0;	
}

单精度示例结果

  • 单精度存储方式
    存储方式遵从IEEE的规范
    单精度存储方式
    在存储中都分为三个部分:符号位、指数位、尾数部分
    符号位:0代表正,1代表负
    指数位:用于存储科学计数法中的指数数据,并且采用移位存储
    尾数部分:尾数部分
  • 算出对应的十进制数
    0 10000010 01000100000000000000000
    第一步:符号位为0,表示正数;
    第二步:指数位为10000010,换算成十进制130,所以指数为130-127=3;
    第三步:尾数位为01000100000000000000000,换算成十进制为(1+1/4+1/64),尾数部分都要加1;
    十进制数值为:2^3*(1+1/4+1/64)=8+2+1/8=10.125

5.基本数据类型之双浮点型

  • 双浮点型
    使用关键字double,内存中占8个字节
  • 声明一个双浮点数
    double a=5.63
  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	double a=5.63;
	cout<<"double:"<<sizeof(double)<<",a:"<<a<<endl;
	return 0;
}

双精度浮点数

  • 双精度的存储方式
    双精度的存储方式
    在存储中都分为三个部分:符号位、指数位、尾数部分
    符号位:0代表正,1代表负
    指数位:用于存储科学计数法中的指数数据,并且采用移位存储
    尾数部分:尾数部分

6.基本数据类型之字符型

采用关键字char,字符数据使用单引号包围,占用一个字节,取值范围-128~127。

  • 定义一个字符
    char ch1=‘a’;
#include<iostream>
using namespace std;
int main(void){
   
	char ch1='a';
	cout<<"char:"<<sizeof(char)<<",ch1:"<<ch1<<endl;	
	return 0;
}
  • 代码显示
    在这里插入图片描述
    字符数据在内存中存储的是字符的ASCII码,即一个无符号整数,所以可以直接把整数赋值给字符变量。
    比如:
    char ch1=‘a’;
    char ch2=97;
  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	char ch1='a';
	char ch2=97;
	cout<<"char:"<<sizeof(char)<<",ch1:"<<ch1<<endl;
	cout<<"char:"<<sizeof(char)<<",ch2:"<<ch2<<endl;
	return 0;
}

字符与ASCII码

7.基本数据类型之宽字符型

  • 宽字符型
    关键字wchar_t,占用2个字节。一种扩展的存储方式。
    char是8位字符类型,最多只能包含256中字符,许多外文字符集所含的字符数目超过256个,char型无法表示。
    wchar_t数据类型一般为16位或32位,但不同的C或C++有不同的规定。
  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	wchar_t ch3='b';
	cout<<"wchar_t:"<<sizeof(wchar_t)<<",ch3:"<<ch3<<endl;
	return 0;
}

宽字符结果

8.基本数据类型之布尔型

bool类型用来表示真假,也即是1、0,占用1个字节。

  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	bool a=true;
	bool b=1;
	bool c=false;
	bool d=0;
	cout<<"bool:"<<sizeof(bool)<<",a:"<<a<<endl;
	cout<<"bool:"<<sizeof(bool)<<",b:"<<b<<endl;
	cout<<"bool:"<<sizeof(bool)<<",c:"<<c<<endl;
	cout<<"bool:"<<sizeof(bool)<<",d:"<<d<<endl;
	return 0; 
}

布尔型结果

9.派生数据类型

派生数据类型分类

  • 指针类型
    通常所说的指针就是指针变量,它是一个专门存储地址的变量,变量的指针主要指变量在内存中的地址。int a=10; int* p; p=&a;

  • 枚举类型
    枚举就是取有限个值,确定列举出来的几个值。
    比如周一到周六 enum Week{Monday,Tuesday,.....Sunday};

  • 数组类型
    将同一类型的数据按照一定的形式有序的组织起来,这些有序数据的集合就称之为数组。

  • 结构体类型
    由各种数据类型组合起来的数据集合

struct man{
   
	int age;
	char name[20];
	short sex;
}
  • 共同体类型
    将不同数据项组成一个整体,和结构体有点类似,但是在内存中占用首地址相同的一段存储单元。注意:每个瞬间只能存储一种数据类型
union myClass{
   
	int a;
	char b;
	float c;	
};
  • 类类型
    万物皆是类型,皆是对象。

10.typedef关键字使用

可以用typedef为一个已有的类型取一个新的名字。
语法: typedef type newname;
例: typedef int abc;

  • 代码显示
#include<iostream>
using namespace std;
int main(void){
   
	typedef int myint;
	myint a=23;
	cout<<"myint:"<<sizeof(myint)<<",a:"<<a<<endl;
	
	typedef float myfloat;
	myfloat b=2.33f;
	cout<<"myfoat:"<<sizeof(myfloat)<<",b:"<<b<<endl;
	
	typedef double mydouble;
	mydouble c=2.33;
	cout<<"mydouble:"<<sizeof(mydouble)<<",c:"<<c<<endl;
	
	typedef char mychar;
	mychar d='u';
	cout<<"mychar:"<<sizeof(mychar)<<",d:"<<d<<endl;
	
	typedef bool mybool;
	mybool e=false;
	cout<<"mybool:"<<sizeof(mybool)<<",e:"<<e<<endl;
	return 0; 
}

typedef学习使用

11.数字型常量

  • 定义
    程序运行中不可改变的值

  • 常量的类型
    常量的类型

  • 整型常量
    比如 0 3 100 -2

  • 进制表示
    二进制
    int i=0b1101;//13
    需要在常数前面加0b来代表二进制
    八进制
    int k=012;//10
    需要在常数前面加0来代表八进制
    十六进制
    int h=0x1a;//26
    需要在常数前面加0x来代表十六进制

  • 浮点型常量
    由整数和小数组成
    小数方式
    double a=23.56;
    指数方式
    double b=2.14e2;//214

  • 布尔型常量
    bool ,真和假。bool a=true;

  • 宏定义常量
    例:#define PI 3.1415926

#include<iostream>
using namespace std;
//宏定义
#define PI 3.14 
int main(void){
   
	cout<<"PI:"<<PI<<endl;
	return 0; 
}

12.字符常量

字符常量是用单引号括起来的一个字符。例:char c=‘a’; 其中a就是一个常量。

  • 转义字符
    转义字符是特殊的字符常量,用\代表转义开始
    转义字符
    代码显示
#include<iostream>
using namespace std;
int main(void){
   
	//警报铃声 
	cout<<"\a"<<endl; 
	// \n为换行符 
	cout<<"hello\n"; 
	return 0; 
} 
  • 字符串常量
    字符串常量是用双引号括起来的字符序列。例:“abc”
    字符串常量存储
    系统会在字符串的末尾添加一个\0作为结束标志
    斜杆0

13.字符常量和字符串常量的区别

using namespace std;
int main(void){
	cout<<"字符常量A:"<<sizeof('A')<<endl;
	cout<<"字符串常量A:"<<sizeof("A")<<endl; 
	return 0; 
} 

字符和字符串区别

  • 区别总结
    1.字符常量使用的单引号,字符串常量使用的双引号
    2.长度不同。字符常量只能用单引号括起来,也即是用1个长度,字符串长度可以为0,但是需要注意即使字符串常量只有一个字符,它的长度也是2因为还有一个\0。
    3.存储的方式不同。字符常量存储的是ASCII,而字符串常量 存储的是有效字符还要存储\0。

14.变量是什么

在程序运行中可以改变的量。

  • 标识符
    也就是变量的名字
    命名规则:
    (1) 由字母、数字、下划线组成,不能以数字开头。
    (2) 大小写字母代表不同的含义。
    (3) 不能使用内置关键字。
    (4) 尽量语义化的名字通过变量名字可以知道是做什么的。
#include<iostream>
using namespace std;
int main(void){
   
	//驼峰命名法:第一个字母小写其他首字母大写 
	int wangSiYuAge=23;
	
	cout<<wangSiYuAge<<endl;
	return 0; 
} 
  • 关键字
    关键字
  • 变量的声明
    语法: [修饰符] 类型 标识符;
    (1) 修饰符是可选的,可以没有
    (2) 变量类型是数据类型
    (3) 标识符是变量名字
    (4) 例如 int a;
    (5) 可以一次声明多个变量
    (6) int a,b,c;
  • 变量赋值
 int a;
 a=4;

变量赋初值

int a=4;

可以多个一起赋值

int a=2,b=3,c=4;

15.变量的类型

整型变量、浮点型变量、字符型变量

#include<iostream>
using namespace std;
int main(void){
   
	int a1=1;
	unsigned int a2=2;
	short a3=3;
	unsigned short a4=4;
	long a5=5L;
	unsigned long a6=6;
	
	float a7=7.12f;
	double a8=8.12;
	long double a9=9.36L;
	
	char ch1='a';//97
	cout<<"a:"<<ch1<<endl;
	char ch2=ch1-32;//65
	cout<<"A:"<<ch2<<endl;
	return 0; 
} 

变量类型

16.C++格式化输出

  • 输出不同数据类型
cout<<22<<2.14<<true<<'A'<<"ABC"<<endl;
  • 输出不同格式的数据
#include<iostream>
#include<iomanip> 
using namespace std;
int main(void){
   
	//输出类型
	cout<<22<<2.14<<true<<'A'<<"ABC"<<endl;
	//输出格式
	int c1=685;
	cout<<"c1:"<<showbase<<c1<<endl;//显示进制前缀
	cout<<"c1:"<<dec<<setw(20)<<setfill('#')<<c1<<endl;//输出宽度为20的十进制,默认靠右
	cout<<"c1:"<<dec<<setw(20)<<setiosflags(ios::left)<<setfill('*')<<c1<<endl;//输出宽度为20的十进制,靠左
	
	cout<<"c1:"<<oct<<c1<<endl;//输出八进制
	cout<<"c1:"<<hex<<c1<<endl;//输出十六进制
	cout<<"c1:"<<hex<<setiosflags(ios::uppercase) <<c1<<endl;//输出大写十六进制
	
	cout<<"c1:"<<dec<<showpos<<c1<<endl;//在非负数值中显示 + 
	cout<<"c1:"<<dec<<noshowpos<<c1<<endl;//在非负数值中不显示 +
	
	double c2=123.456789123;
	cout<<"c2:"<<c2<<<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值