导图社区 C转CPP
C语言转C 夯实前期基础;差异说明,包含C++知识内容:C到C++、1.bool类型、2.内联函数、3.函数重载;C知识内容、软件的操作、本次作业等。
编辑于2021-11-16 14:47:20第1课_C转C++
C++知识内容
C到C++
二者关系 韦恩图
学习C++前所需掌握C的内容
基本数据类型
语句
函数
数组
指针
结构体,联合,枚举
1.bool类型
定义方式
bool 数据名=true;
bool 数据名=false;
bool 数据名=0;
bool 数据名=1;
bool 数据名=666;
bool 数据名;
所占空间
1字节
取值范围
两个值:true, false
false
假
零
true
真
非零
2.内联函数
概述:
1.是一个函数
优点:
2.是通过一种内存膨胀的形式减少函数调用时间,提升程序运行速度
内存大了,提升了速度:以空间换取时间的提升
5个内存分区
多+一个代码区
代码区,常量区,全局区,栈区,堆区
内存膨胀:在代码区就完成执行,不需要通过进栈出栈,从而提升速度
栈区操作:主调函数将实参传递给被调函数的形参,将计算结果返回给主调函数
内联函数不需要执行该操作
使用条件
3.适合用于短小精悍的的代码
代码短
无循环
经常调用
函数的定义
普通函数 int gnum() { return 6; }
内联函数 inline int gnum() { return 6; }
注意:与带参数的宏定义区分
宏定义会直接替换
内联函数需要调用
3.函数重载
what
在同一文件中定义的函数名字可以重复,但需要一些条件
how
先决条件
函数名必须完全一致
函数名一样
函数定义
返回值类型 函数名(参数列表) { 函数体 }
函数的参数列表不同
参数列表不一致
参数个数
参数类型和顺序
错误示范-返回值类型不同
int func(){}
void func(){}
无法重载
正确范例
定义
int func(int a) { return a; } int func(int a,int b) { a++; return a; } int func(int a,int b,double c) { a*=2; return a; } int func(float a,int b) { a++; return a; }
调用
main() { func(1); func(1,6); func(1,6,3.14); func(1.0f,6) }
二义性问题
定义
int func(int a,int b) { a++; return a; } int func(float a,int b) { a++; return a; }
调用
main() { func(7,3.14) }
注意:小数默认是double类型
可能导致无法重载
解决方式:
强行进行参数转换
func(1,3.14f)
新定义一个函数
int func(int a,double b)
4.函数参数缺省
缺省
传实参的时候,可以少传
缺省≠默认
what
在声明函数的时候,位某个参数指定一个默认值
在调用这个函数的时候,可以不传对应的位置的实参
而是使用默认参数
范例
声明
void func(int a,int b =666);
调用
int main { fun(233); fun(233,777); }
定义
void func(int a,int b); { printf(……输出a,b值……); }
使用的要求
1.缺省只能从后向前
void func(int a=666,int b);
因为实参是从前往后传递的
2.可以全部缺省
void func(int a=233,int b =666);
3.在函数声明时指定缺省即可,实现函数体时,可以照常实现
4.没有声明的情况下,可以在实现函数体时给默认值
注意:
缺省值必须是常量
缺省和重载同时使用时
二义性:
针对这种情况下
1.去掉默认值
2.去掉重载
3.除掉提出问题的人
即不可同时使用
5.引用
what
引用是对一个变量或者对象取别名
取别名
未引用是2个值
int main() { int 张三=0; int 阿三=0; return 0; }
引用后
int main() { int 张三=0; int& 阿三=张三; return 0; }
定义:
int main() { int num=0; int& ref=num; return 0; }
数据类型 数据名1; 数据类型& 引用名=数据名1;
二者使用同一段内存
打印地址:
printf("&num=0X%X,\n&ref=0X%X\n",&num,&ref);
地址相同
补充%x是取地址数据类型
注意与指针进行区分
指针是新地址
引用是原地址
注意事项
引用是别名,定义时必须初始化
int& ref1;
没有初始化
int& ref=num;
数据类型必须一致
不会开辟新空间
初始化指创建变量时赋予的初始值,赋值是把对象当前值擦除,用新的值代替
一个引用对应一个对象,一个对象对应多个应用
C知识内容
char
字节数
sizeof()
取值范围
-128~127
宏定义
#define
函数
返回值类型 函数名(参数列表) { 函数体 }
软件的操作
函数命名不要用中文
.c是C语言
.cpp(c plus plus)是C++
using namespace std //命名空间
insert按键的使用
行数显示:工具-选项-文本编辑器下拉菜单-选定C/C++-右侧修改
scanf()报错处理方法
1.scanf()改为scanf_s()
有效
2.加表头#define _CRT_SECURE_NO_WARNINGS
亲测无效
3.加表头#pragma warning(disable:4996)
亲测无效
本次作业
1 整理笔记 2 实现fun函数:通过传参int类型 + int类型、double类型 + double类型、float类型+float类型 ,得到结果并返回值,输出显示。
自建代码