1.关于函数
作用:避免代码重复 可以方便维护,因为当多个地方需要用到同样的代码时,如果要做出修改只需要改函数就能整体修改。
函数通常都会有返回值,什么类型的函数返回什么样的类型的值 函数通常分为函数声明和函数参数通常声明放在头文件中 函数定义发在C++文件中 这样做可以在别的C++文件用到相同函数时直接用#include包含头文件使用已被声明定义的函数
int Multiply(const int message)//这一行算是声明
{
return 1//代码块中的是函数定义
}//整型函数的返回值也要是整型
void Multiply(const int message)
{
return
}//无返回类型的函数
main()//主函数是唯一可以不需要返回值的函数
函数的工作过程:
每次调用函数时,编译器会生成一个call指令穿件堆栈结构,把参数之类的放入堆栈,返回地址也压入栈,跳到二进制不同的部分执行指令,为了返回结果要回到最初调用函数前,像在内存中跳跃着执行函数。
#program once
位置:头文件第一行
作用:防止本头文件被重复包含
例子:如果一个C++文件中重复引用两次相同的文件会发生重定义错误,使用#progam once 第二次被引用的头文件在预处理阶段会被禁用 所以能够避免错误。
相同作用的代码
#ifndef _LOG_H//判断_LOG_H有没有被定义 如果没有 #endif 前的代码被保留
#define _LOG_H//定义_LOG_H
......
......
#endif
这段代码同样能避免重复引用。
关于include后用<>和“”的区别
< >:只用于编译器包含的路径 是C++的标注库 为了区别于c语言库 C++的标准库没有后缀、
" ":是基于当前c++文件的相对路径 例如"../xx.h"是在当前文件的上层目录下找到xx.h文件。
当然" "同样可以引用标准库。
关于调试
F9 设置断点
作用:设置断点后开始运行程序时会在断点处停下 便于查看
F10 逐语句运行代码
作用:按一下执行一条代码
F11:逐过程运行代码
作用:按一下执行一条代码 遇到函数会进到函数内部逐渐运行代码
shift+F11:跳出当前函数
作用:当正在函数中调试时按这个会跳出当前函数 回到函数该函数调用的位置。
在调试时代码左侧的黄箭头是指将要执行的代码。
调试的窗口设置
调出内存窗口方便查看变量的数值变化。
小技巧:当在调试循环时想看循环完成后的结果可以在循环外之后的地方设置断点再运行程序。
关于循环
for循环
写法
1.for(变量声明;条件判断;下次迭代前执行的代码)
{
.......
.......
}
执行过程
1)变量被声明
2)条件判断是否为真 若为真则执行代码块中内容
3)执行完成后执行下次迭代前执行的代码
5)重复从2)开始执行
特点
for循环中的i变量是迭代进行的
for(int i=0;i<5;i++)
这段代码中i的迭代是0,1,2,3,4
发现和数组的索引相同,可以将i变量用于数组索引中
int i=0;
for(;i<5;)
{
i++;
}
此种写法和上面那种等效 int i=0给for循环判断提供了条件 i++ 对影响条件判断的变量做修改
while循环
写法
while(bool)//为真 执行代码块 再检查
{
}
特点
可以不用声明变量 while里敲个1直接启动
do while()循环
写法
do
{
.......
.......
}while(bool)
特点
先执行代码块中的内容再进行判断,如果为while()中的值为 真 会继续循环
-
控制流语句
作用
更好的控制循环的实际运行continue
使用位置:只能在循环中使用
作用:当循环中执行continue时 会忽略后面的代码进入该循环的下一次迭代。
例子:
for(int i=0;i<5;i++)
{
if(i%2==1)//判断i是不是奇数
{
continue;//若为奇数就进如下次迭代
}
std::cout<< i <<std::endl;//最后结果是2 4
//因为当i是奇数的时候直接进入下次迭代了没有执行打印命令
}
break
使用位置:循环中或者在switch选择语句中
作用:执行该代码时跳出循环
例子:
while(1)
{
int i=1;
i++;
if(i>5)//当i>5时hui执行break语句跳出循环
break;
}
return
使用位置:任何地方
作用:执行该语句是会退出函数并返回值;