C++教程 - How to C++系列专栏第5篇

这篇具有很好参考价值的文章主要介绍了C++教程 - How to C++系列专栏第5篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于专栏

这个专栏是优质的C++教程专栏,如果你还没看过第0篇,点击这里去第0篇

本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C++编译器:Clang

感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^

博主反馈非常及时,如果你在阅读的时候遇到问题,可以直接在评论区提问,博主看到后会在24小时内给你反馈

这两天出去旅游了没有及时更新,先向关注这个专栏的朋友道歉,但我们没有断更哦

C++教程 - How to C++系列专栏第5篇


目录

关于专栏

更新记录

2023年8月22日

前言

cin

cout语句的整合

函数

结语

快捷翻页

本文参考文章,书籍


更新记录

2023年8月22日

发布第一篇文章


前言

程序有了输出怎么输入?怎么把cout写的简洁一点?函数怎么写?


cin

下面我们可以来看一条程序,对前面的程序做了扩展,使用cin

#include <iostream>

int main(void)
{
    using namespace std;

    int paper;

    cout << "How many pieces of paper do you have?" << endl;
    cin >> paper;
    paper = paper - 2;
    cout << "Blog time!";
    cout << endl;
    cout << "Now you have ";
    cout << paper;
    cout << " pieces of paper.";
    cout << endl;

    return 0;
}

下面是这段程序的示例输出: 

How many pieces of paper do you have?
20
Blog time!
Now you have 18 pieces of paper.

 这里我们可以看出键盘输入的信息“20”被传递给了paper变量,从cout中那里我们可以看出,实际上这个过程可以理解为键盘输入的数据流向了paper变量,显然,cin是一个输入流

cin属于iostream中的istream类中的一个对象

>>可以看作信息由大的一遍流入计算机,iostream把cin定义为了表示输出流的对象,需要在运算符右侧提供一个变量,用于接受输入的数据,在示例程序中,paper被设定为整数变量,传入数据会被转换为用于存储整数的形式


cout语句的整合

比如我们要输出:

Hello,I'm abcd

其中,abcd是需要用户的输入,那在此之前我们会这么写:

...

cin >> in;
cout << "Hello I'm ";
cout << in;
cout << ".";
cout << endl;

这样很麻烦,还显得程序很难看,没有必要这么写对吗?

我们可以整合成这样:

...

cin >> in
cout << "Hello I'm " << in << " ." << endl;

 这样,原本要4行的输出被整合进了一行,还更漂亮是吗?

如果你喜欢分行,也可以这样

...

cin >> in;
cout << "Hello I'm ";
     << in;
     << ".";
     << endl;

函数

函数可以创建C++程序的模块,对C++对OOP至关重要,现在我们来简单讲讲函数的一些基本特征

有函数的返回值将会生成一个值,这个值可以赋予给变量或者其他表达式使用,比如希望使用sqrt()函数,并把返回值赋予给变量c1,那么我们就可以在代码中使用这样的语句:

...
c1 = sqrt(4)
...

这里将使用sqrt函数,包括函数调用的函数叫做调用函数,被语句调用的函数叫做被调用函数

圆括号中的值(这里是4)是要传递给函数的值,括号里的值被称为参数,计算的结果为2,这个值被放回给程序,这个值就被称为返回值

函数原型之于函数就像变量声明之于变量—指出涉及的类型

例如,C++库将sqrt()函数定义成将一个(可能)带小数部分的数字(如 6.25)作为参数,并返回一个相同类型的数字

有些语言将这种数字称为实数,但是C++将这种类型称为double(在之后我们会讲解)

sqrt()的函数原型像这样:

double sqrt(double);

第一个double意味着sqrt()将返回一个double值

括号中的double意味着sqrt()需要一个double参数

因此该原型对sqrt()的描述和下面代码中使用的函数相同:

double c1;
c1 = sqrt(4);

在程序中使用sqrt()时,也必须提供原型,可以用两种方法来实现

  • 在源代码文件中输入函数原型
  • 包含头文件cmath(老系统为math.h),其中定义了原型

在这里,更建议第二种方法,因为头文件更有可能使原型正确,对于C++库中的每个函数,都在一个或多个头文件中提供了其原型,可以通过手册或在线帮助查看函数描述来确定应使用哪个头文件

比如,sqrt()函数的说明将指出,应使用cmath头文件

千万不要混淆函数原型和函数定义

可以看出,原型只描述函数接口,也就是说,它描述的是发送给函数的信息和返回的信息,而定义中包含了函数的代码

比如计算平方根的代码,C和C++将库函数的这两项特性(原型和定义)分开了,库文件中包含了函数的编译代码,而头文件中则包含了原型

在首次使用函数之前要提供它的原型

通常的做法是把原型放到 main()函数定义的前面(前面我们使用头文件也可以把函数原型放到main()函数的前面),我们举个例子,下面的程序通过包含cmath文件来提供该函数的原型

#include <iostream>
#include <cmath>

int main(void)
{
    using namespace std;

    double in;
    double out;

    cout << "This is a tool for measuring the side length of a square" << endl;
    cout << "Enter the area of the square:";
    cin >> in;
    out = sqrt(in);
    cout << "Its side length is " << out << "." << endl;

    return 0;
}

这是一个计算正方形边长的工具,下面是这个程序的输出

This is a tool for measuring the side length of a square
Enter the area of the square:16
Its side length is 4.

 如果你使用的是很老的编译器,那么使用头文件方法应该使用

#include <math.h>

有些函数需要多项信息

这些函数使用多个参数,参数间用逗号分开

例如,数学函数pow()接受两个参数,返回值为以第一个参数为底,第二个参数为指数的幂

该函数的原型如下:

double pow(double, double);

​​​​​​​比如要计算3的3次方,可以这么使用pow()函数

c1 = pow(3.0, 3.0);

有一些函数不接受任何参数,比如rand()函数,它的原型如下

int rand(void);

其中void表示它不接受任何参数,返回一个随机整数

可以这么使用这个函数

c1 = rand(void)

或者

c1 = rand() 

省略void或者不省略效果是一样的

实际上main(void)函数也是不接受任何参数的,前面我们说过,这里不过多赘述

标准C库提供了140多个预定义的函数。如果其中的函数能满足要求,那么就可以使用它们。但用户经常需要编写自己的函数,尤其是在设计类的时候。无论如何,设计自己的函数很有意思,下面来介绍一下

其实前面已经使用过好几个我们自己定义的函数,它们就是main(),每个C++程序都必须有一个main()函数,用户必须对它进行定义

假设需要添加另一个用户定义的函数。和库函数一样,也可以通过函数名来调用用户定义的函数。对于库函数,在使用之前必须提供其原型,通常把原型放到main()定义之前。

但现在你必须提供新函数的源代码。最简单的方法是,将代码放在main()的后面,我们来举个例子

#include <iostream>
int conversion(double);

int main(void)
{
    using namespace std;

    double length;

    cout << "This is a meter to centimeter conversion tool." << endl;
    cout << "Enter the length calculated using meters." << endl;
    cin >> length;
    conversion(length);

    return 0;
}

int conversion(double accept)
{
    using namespace std;
    cout << "Converted to centimeters is " << accept * 100 << endl;
}

但是这种方法编译器会抛出编译警告

firstfunction.cpp:22:1: warning: non-void function does not return a value [-Wreturn-type]
}
^
1 warning generated.

意思是,又返回值的函数没有检测到返回值,虽然它可以正常运行,但我们最好改进一下

#include <iostream>
int conversion(double);

int main(void)
{
    using namespace std;

    double length;
    double out;

    cout << "This is a meter to centimeter conversion tool." << endl;
    cout << "Enter the length calculated using meters." << endl;
    cin >> length;
    out = conversion(length);

    cout << "Converted to centimeters is " << out << "." << endl;
    return 0;
}

int conversion(double accept)
{
    return accept * 100;
}

我们可以把运算结果作为返回值,然后赋值给变量out,这样就不会有编译警告了

下面是这段程序的示例输出:

This is a meter to centimeter conversion tool.
Enter the length calculated using meters.
1
Converted to centimeters is 100.

下一篇我们来细致讲解函数


结语

作者会经常帮助有问题的小伙伴解决问题

如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

如果你们身边有像你提起过这个领域的,或者希望可以和ta一起进步的,把这篇文章分享给ta吧

4652字,9个父项,1个子项


快捷翻页

cout还是printf?C++教程 - How to C++系列专栏第4篇

C++教程 - How to C++系列专栏第3篇

C++教程 - How to C++系列专栏第2篇

C++教程 - How to C++系列专栏第1篇

C++教程 - How to C++系列专栏第0篇


本文参考文章,书籍

参考文章

C++中cin的详细用法_cin函数_大大大大大大旭的博客-CSDN博客

https://www.cnblogs.com/suozhiyuan/p/11932985.html​​​​​​​

C++ 类 & 对象 | 菜鸟教程​​​​​​​

pow函数的原型 以及使用pow函数需注意的坑!!_pow 原型_SSS迪的博客-CSDN博客

C++的POW()函数用法介绍,也即幂函数的使用方法_c++ pow 负数_Howe Tan浪漫的季节的博客-CSDN博客

sqrt()函数的详解和用法_辉小歌的博客-CSDN博客 

文心一言

参考书籍

C++ Primer Plus文章来源地址https://www.toymoban.com/news/detail-667207.html

到了这里,关于C++教程 - How to C++系列专栏第5篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hexo教程,看这一篇就够了- How to系列

    目录 读者先看这里​​​​​ Bayi使用的软件版本: 更新记录 2023年7月30日 Hexo是什么 在此之前 Node.js 许可协议 选择安装地址 选择安装组件 安装 检查安装 更改全局模块所在路径和缓存路径地址 Git 下载并打开Git安装包 选择安装路径 选择安装组件 选择开始菜单文件夹名称

    2024年02月14日
    浏览(37)
  • Hexo搭建教程?看这一篇就够了- How to系列

    目录 读者先看这里​​​​​ Bayi使用的软件版本: 更新记录 2023年7月30日 Hexo是什么 在此之前 Node.js 许可协议 选择安装地址 选择安装组件 安装 检查安装 更改全局模块所在路径和缓存路径地址 Git 下载并打开Git安装包 选择安装路径 选择安装组件 选择开始菜单文件夹名称

    2024年02月14日
    浏览(41)
  • Rust教程:How to Rust-变量

    本文为第1篇 本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议完全无计算机基础的同学 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用: 操作系统macOS Sonoma 14 / Apple M1 编译器:Rustc Cargo 感谢一路相伴的朋友们,感谢你们的支持

    2024年03月15日
    浏览(52)
  • Rust教程:How to Rust-基本类型

    本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议完全无计算机基础的同学 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用: 操作系统macOS Sonoma 14 / Apple M1 编译器:Rustc Cargo 感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^ Rust教

    2024年04月12日
    浏览(40)
  • 鸿蒙开发系列教程(七)--ArkTS语言:状态管理

    如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念 状态管理机制:在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化

    2024年01月20日
    浏览(60)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(77)
  • 【C语言趣味教程】第一章:你好, 世界! 「热门 C 语言专栏《维生素C语言》2023 全新重制」

      🔗 《C语言趣味教程》👈 猛戳订阅!!! 💭 写在前面: 这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出 \\\"有趣的干货\\\" !

    2024年02月12日
    浏览(56)
  • 【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月15日
    浏览(70)
  • 鸿蒙开发:深入了解Arkts语言中的Want对象及其运用【鸿蒙专栏-23】

    Arkts语言中的 Want 是一种用于对象间信息传递的载体,主要用于应用组件之间的信息传递。本文将深入探讨 Want 的定义、用途、类型以及参数说明

    2024年02月05日
    浏览(58)
  • 效率系列(八) macOS配置前端开发环境

    大家好,我是半虹,这篇文章将会介绍如何在 macOS 中从零配置前端开发环境 零、序言 这篇文章主要是想提供一份前端开发配置清单,以及简单介绍一下安装步骤,仅供大家参考 正式开始之前先说一下硬件,电脑是 MacBook Air M2,系统是 macOS Sonoma 14.0 一、软件安装 1、Chrome m

    2024年02月22日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包