c++复盘笔记3

目录

  • 控制结构
    • for循环执行流程
    • break 语句
    • goto
  • 函数
    • 函数调用的过程:
    • 默认形参问题
    • 函数重载问题
    • 内联函数的展开和重载函数的绑定在编译阶段进行
    • c++常用的系统函数
  • 枚举类型
  • 数组
    • 数组的初始化
    • 数组元素的表示方法:
    • 字符数组的初始化问题
  • 结束语

控制结构

for循环执行流程

for(表达式一;表达式二;表达式三)
{循环体}
首先判断表达式二如果为true则执行循环体一次,然后执行表达式三,再判断一下表达式二,
………

break 语句

break只能跳出本层循环,并不能跳出嵌套它的其他循环
比如while()//循环一
{
while()//循环二
{
break;//只能跳出循环二,不能跳出循环一
}
}

goto

语法
条件 goto 标识符;
……
goon 标识符:……;
程序调到goon 标识符后面的代码继续执行
但是需要注意的是:goto语句的使用被限制在一个函数体内

函数

不可以在一个函数体内定义另一个函数
没有返回值的函数 如果要写return语句的话
直接写return;

函数调用的过程:

首先保存调用函数下一条语句的地址压入栈中
然后读取函数中的实参从后往前依次压入栈中
把实参的值赋值给形参 然后一条一条地执行函数体语句 最后如果没有返回值 则直接取出最开始保存的地址 跳转到地址处继续执行代码 如果有返回值 那么先保存返回值返回后 然后再继续执行下面的代码。

默认形参问题

带有默认值的形参右边的所有形参都必须有默认值
而且在调用的时候 如果一个带有默认值的形参位置没有传实参,那么这个位置右边所有的参数都不传实参

函数重载问题

函数名相同,返回值可以不同,也可以相同,参数类型和数量可以不同
注意:其他都相同仅仅返回值类型不同是不行的,编译会出错
确定调用那个函数的过程被称作绑定
绑定的优先次序为精确匹配 ->对实参的类型向告类型的匹配->对实参类型向低类型以及相容类型转换后的匹配

内联函数的展开和重载函数的绑定在编译阶段进行

c++常用的系统函数

1、求平方根:
double sqrt(double x);
2、求绝对值:
int abs(int x);
labs(long x);
dabs(double x);
3、指数函数
double pow(double x,double y); //返回x的y次方
double exp(double x);//返回e的x次方
double sin(double x);//正弦
double cos(double x);//余弦
double tan(double x);//正切
double asin(double x);//反正弦
double ascn(double x);//反余弦
double atan(double x);//反正切
double ceil(double x);//不小于x的最小整数
double floor(double x);//不大于x的最大整数
int isalpha(int x);//是否是字幕 按照ascll码比较int isdigit();//是否是数字
int tolower(int x);//转为小写字母
int toupper(int x);//转为大写字母

枚举类型

枚举类型的值并不是初始化时写的值 而是对应地常数 初始化写的只是标识符 但是给枚举类型变量赋值的时候不可以直接赋常数值 要赋你写的标识符,或者强转为枚举类型
例如:enum weekday{MON,TUE,WEN,THU,FRI,SAT,SUN};
weekday day1= weekday(0);

枚举类型的变量不能直接输入

数组

数组的初始化

函数里的数组没有初始化的元素 为随机值
函数外未初始化的数组 被初始化为0
数组初值表可以以逗号结尾 也可以没有逗号

数组元素的表示方法:

a[n]=a+n*sizeof(type)=a+n;
数组名是一个地址常量不能作为左值

字符数组的初始化问题

不可以用字符初始化字符数组:
例如: char arry[]=‘a’;//错误

但是可以用字符串初始化:
例如: char arry[]="\0";//将字符数组初始化为空串
不可以用字符串变量初始化
例如:
std::string str=“niganma”;
char arry[]=str;//错误
char arry[8]=str;//错误
但是可以将字符串变量转换乘c风格的字符串之后 再用strcpy函数可以将其赋值给字符数组
承接上面:
char g[8];
strcpy(g,str.c_str());
对于c风格的字符串也不可以直接用来初始化字符数组 必须使用strcpy()函数来初始化

但是可以用字符串常量初始化
例如:
char arry[]=“niganma”;//正确
char arry[7]=“niganma”;//错误 注意字符串的结尾为’\0’ 虽然算进字符数组的长度但是占一个字节的空间
char arry[8]=“niganma”;//正确
for(auto x:arry)
std::cout<<x<<" ";// n i g a n m a 并不会输出’\0’ 因为’\0’是结束符 遇到它就结束了
但是会占一个字节的空间 sizeof(arry)=8; strlen(arry)=7;

结束语

看似寻常最奇绝,成如容易却艰辛。
今天先写到这里,不要心急,不要贪多,慢慢来,相信一切都会变好的,加油!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pp不会算法^v^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值