蓝桥ROS机器人之C++基础2总结和测评
Posted zhangrelay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥ROS机器人之C++基础2总结和测评相关的知识,希望对你有一定的参考价值。
函数是旨在完成特定工作的可重用语句序列。自己编写的函数称为用户定义函数。
函数调用是告诉 CPU 执行函数的表达式。发起函数调用的函数是调用者,被调用的函数是被调用者或被调用函数。进行函数调用时不要忘记包含括号。
函数定义中的花括号和语句称为函数体。
函数的返回类型表示函数将返回的值的类型。return 语句确定返回给调用者的具体返回值。这个过程称为按值返回。如果函数不向调用者返回值,则它们的返回类型可以是void 。未能从非 void 函数返回值将导致未定义的行为。
函数main的返回值称为状态码,它告诉操作系统(以及任何其他调用程序)程序是否成功执行。按照共识,返回值 0 表示成功,正返回值表示失败。
函数参数是函数中使用的变量,其值由函数的调用者提供。参数是从调用者传递给函数的特定值。当一个参数被复制到参数中时,这称为按值传递。
C++ 没有定义函数调用是否从左到右评估参数,反之亦然。
函数体内部定义的函数参数和变量称为局部变量。变量存在的时间称为它的生命周期。变量是在运行时创建和销毁的,也就是程序运行的时候。变量的作用域决定了它可以在哪里被访问。当一个变量可以被访问时,我们说它在范围内。当它无法访问时,我们说它超出了范围。Scope 是一个编译时属性,这意味着它在编译时强制执行。
重构是将一个较大的函数分解为许多更小、更简单的函数的过程。
空白是指用于格式化的字符。在 C++ 中,这包括空格、制表符和换行符。
前向声明允许我们在实际定义标识符之前告诉编译器标识符的存在。要为函数编写前向声明,我们使用函数原型,其中包括函数的返回类型、名称和参数,但没有函数体。
定义实际上实现(对于函数和类型)或实例化(对于变量)标识符。声明是告诉编译器标识符存在的语句。在 C++ 中,所有定义都用作声明。纯声明是不是定义的声明(例如函数原型)。
大多数重要的程序都包含多个文件。
当以编译器或链接器无法区分的方式将两个标识符引入同一程序时,编译器或链接器将产生命名冲突。命名空间保证命名空间内的所有标识符都是唯一的。std 命名空间就是这样的命名空间之一。
预处理器是在代码编译之前在代码上运行的进程。指令是预处理器的特殊指令。指令以 # 符号开头并以换行符结尾。宏是定义如何将输入文本转换为替换输出文本的规则。
头文件是旨在将声明传播到代码文件的文件。使用#include指令时,#include指令被包含文件的内容替换。在包含头文件时,在包含系统头文件(例如 C++ 标准库中的头文件)时使用尖括号,在包含用户定义的头文件(您编写的头文件)时使用双引号。包含系统头文件时,如果存在不带 .h 扩展名的版本,请包含它们。
标头保护可防止标头的内容多次包含在给定的代码文件中。它们不会阻止标头的内容被包含到多个不同的代码文件中。
编写一个单文件程序(名为 main.cpp),从用户那里读取两个单独的整数,将它们相加,然后输出答案。该程序应使用三个功能:
- 应该使用名为“readNumber”的函数从用户那里获取(并返回)一个整数。
- 应该使用名为“writeAnswer”的函数来输出答案。这个函数应该接受一个参数并且没有返回值。
- 应该使用 main() 函数将上述函数粘合在一起。
#include <iostream>
int readNumber()
std::cout << "Enter a number: ";
int x ;
std::cin >> x;
return x;
void writeAnswer(int x)
std::cout << "The answer is " << x << '\\n';
int main()
int x readNumber() ;
int y readNumber() ;
writeAnswer(x + y); // using operator+ to pass the sum of x and y to writeAnswer()
return 0;
修改在练习 #1 中编写的程序,使 readNumber() 和 writeAnswer() 位于一个名为“io.cpp”的单独文件中。使用前向声明从 main() 访问它们。
如果遇到问题,请确保将“io.cpp”正确添加到项目中,以便对其进行编译。
io.cpp
#include <iostream>
int readNumber()
std::cout << "Enter a number: ";
int x ;
std::cin >> x;
return x;
void writeAnswer(int x)
std::cout << "The answer is " << x << '\\n';
main.cpp
// these are the forward declarations for the functions in io.cpp
int readNumber();
void writeAnswer(int x);
int main()
int x readNumber() ;
int y readNumber() ;
writeAnswer(x+y);
return 0;
修改在 #2 中编写的程序,使其使用头文件(名为 io.h)来访问函数,而不是直接在代码 (.cpp) 文件中使用前向声明。确保您的头文件使用头保护
io.h
#ifndef IO_H
#define IO_H
int readNumber();
void writeAnswer(int x);
#endif
io.cpp
#include "io.h"
#include <iostream>
int readNumber()
std::cout << "Enter a number: ";
int x ;
std::cin >> x;
return x;
void writeAnswer(int x)
std::cout << "The answer is " << x << '\\n';
main.cpp
#include "io.h"
int main()
int x readNumber() ;
int y readNumber() ;
writeAnswer(x+y);
return 0;
以上是关于蓝桥ROS机器人之C++基础2总结和测评的主要内容,如果未能解决你的问题,请参考以下文章