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

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

关于专栏

这个专栏是优质的C++教程专栏,这个专栏是优质的C++教程专栏,如果你还没看过第0篇,点击C++教程 - How to C++系列专栏第0篇去第0篇,会保持更新哦

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

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

当然,C++是一门具有可移植性的语言,意味着用Linux和Windows的小伙伴也可以看这篇文章入坑C++了

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

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


目录

关于专栏

更新记录

2023年8月5日

前言

你的C++预备知识

编译器?G++,Clang是什么?

G++,Clang有什么区别?

可移植性是什么?

C++有标准吗?

扩展名

你的第一个C++

 main函数

函数头

void main()

return 0

语句与分号

C++的注释

结语

快捷翻页

本文参考文章,书籍


更新记录

2023年8月5日

发布第一篇文章


前言

本文将讲述C++的预备知识,什么事编译器?Clang和g++选哪个?C++的可移植性是啥?C++有标准吗?C++的扩展名是什么?第一次写出你的C++程序,了解什么是函数头,一定要有分号吗?注释怎么写?还是“#”吗?


你的C++预备知识

相信大家或多或少都听说过C++,或多或少知道它的应用领域很多

C++自2002年至今几十年来时代发展无比飞速,但其排名一直在前5内。可以看出它在编程语言的地位

只是随着近些年由C/S(客户端/服务端)转向B/S(浏览器/服务端),以及安卓手机的发展,Java一直名列前茅。Python随着爬虫和Django框架在Web开发上的开发效率,以及今年火热的人工智能优势也是火箭式窜升

但我们似乎发现,真正能对C++地位造成威胁的暂时还没有

编程界流行这样一句话:C几乎什么都能做,C++几乎什么都能做好,足见其功能的强大,C++的开发社区也是日益健壮

所以可见C++是一门经久不衰的语言

编译器?G++,Clang是什么?

假如你正在阅读一篇文章,但这篇文章并不是用中文写的,或许有些同学外语好看得懂,但大部分人会把它放到翻译工具里翻译一下

从本质上讲,你只是在翻译中输入了你不理解的语言,翻译将这句话翻译成中文,就像这样:

你不太理解“Cat”是什么意思,于是你打开了翻译,选择了中翻英,然后翻译告诉你这是“猫”的意思

操作系统也看不懂你写的什么,所以它要编译为可执行文件(macOS和Linux同学们知道的.out,Windows同学知道的.exe

G++,Clang有什么区别?

对于现在来说,他们没什么区别,在之后我们可能会讲到不同C++实现的区别,但现在,他们并没有什么区别,本文选择了Clang作为编译器,在macOS,Linux,Windows的同学都可以正常使用同一个编译器,建议你可以和我们一样,这里贴上Clang的下载地址,macOS安装了Xcode Command Line Tools就可以。

可移植性是什么?

C++的可移植性指的是代码能够在不同的平台、操作系统和编译器上编译和运行的能力

大概懂了吧?还不懂?举个例子:

假设你现在在一台MacBook用macOS上写了个汇编的程序,现在需要在一台上面跑着Linux系统的电脑上运行,那么你需要……

你需要重新写一份适合于这个平台的程序(没错会把你搞崩溃,因为你需要学习更多的东西)

但假如换做C++那就不一样,把源码文件传过去,在Linux上编译一下就能用

C++有标准吗?

ISO/IEC 14882:1998就是C++的第一个国际通用标准,后面又有了C++03(ISO/IEC 14882:2003),一般使用C++98,C++03,后面的C++11,C++17,C++20,大家也大概明白是什么意思了吧?

ISO C++标准还吸纳了,ANSI C标准,因为C++一般是C的超集,大概意思就是说,任何C程序都可以在C++那里跑通。

扩展名

他们的扩展名一般为.cpp(C Plus Plus),之后我们的程序也会用.cpp作为结尾


你的第一个C++

first.cpp

#include <iostream>

int main(void)
{
    using namespace std;
    cout << "This is my first C++ program!" << endl;
    cout << "Let's go!"
    cout << endl;
    return 0;
}

 main函数

first.cpp代码的基本结构如下:

int main(void)
{
    code
    return 0;
}

这几行说明:有一个名为main(void)的函数, 并描述了函数的行为

这些代码(上面一个,省略些的)被称为函数定义,定义由函数头和函数体组成,下面依次讲解

函数头

int main(void)

为函数头,其中int代表了它的类型:整型(之后我们会详细讲解,int之后我们会经常说到) ,main被称为函数名,"(void)"表示该函数不接受任何参数,也可以使用空括号"()"两者等效,在《C++ Primer Plus》书中是空括号,两种都可以,加void可能会更直观一些,但大部分已经不加了,这里就遵从大家喜好了。

void main()

看任何C++书的朋友,秉承能救一个是一个的精神,一定给大家郑重声明一点!

看到很多的朋友,main函数都写成void main(),而不是int main()

可能大家看书里说,这两种都是一样的,比如《C++ Primer Plus》中这么说:

有些程序员使用下面的函数头,并省略返回语句:

void main()

这在逻辑上是一致的,因为 void 返回类型意味着函数不返回任何值。该变体适用于很多系统,但由于它不是当前标准强制的一个选项,因此在有些系统上不能工作。因此,读者应避免使用这种格式,而应使用 C++标准格式,这不需要做太多的工作就能完成

在这里告诉大家,void main()的写法根本就是错的,完完全全是错的

main函数的返回值大家注意了吗,也许有人会说可以没有返回值,如果你深入到程序的CRT启动代码,你会发现....

__initenv = envp;
mainret = main(argc, argv, envp);
if ( !managedapp )
   exit(mainret);
if (has_cctor == 0)
   cexit();

按照C99标准,即使函数本身没有定义返回值,编译器也会加上,以返回给激发程序,运行状态。而C与C++中从来没有定义过void main()

C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着

The definition void main( ) { /* ... * / } is not and never has been C++, nor has it even been C.

翻译:void main()从来就不存在于 C++ 或者 C 

也就是说,void main()可能能被一些编译器通过,但ISO标准根本就没有定义void main(),在一部分编译器是跑不通的,那么你可能就悲催了:(,使用C++的同学们还是使用int main或者int main(void)

学过C的朋友看这里

C里面有一种写法:

main()

C中省略返回值类型相当于返回值类型为int,但在C++中淘汰了这种用法

return 0

你可能会发现末尾会有一个返回值,它会向操作系统说明,这个程序没有问题,除了0以外的值会被视为错误

语句与分号

语句是要执行的操作。为理解源代码,编译器需要知道一条语句何时结束,另一条语句何时开始。有些语言使用语句分隔符。例如:FORTRAN 通过行尾将语句分隔开来,Pascal 使用分号分隔语句。在 Pascal中,有些情况下可以省略分号,例如 END 前的语句后面,这种情况下,实际上并没有将两条语句分开。不过 C++与 C一样,也使用终止符(terminator),而不是分隔符。终止符是一个分号,它是语句的结束标记,是语句的组成部分,而不是语句之间的标记。结论是: 在 C++中,不能省略分号

学过其他语言的同学可能有点不适应哈

C++的注释

C++使用“//”双斜杠作为注释,注释后面的东西在预编译时就会被去掉,之后我们会在文件头里详细讲解什么是预编译

当然,我们也可以使用C风格的注释,即在/*和*/之间的信息会被注释,学过CSS的同学可能非常熟悉哈哈

学过Python的同学记住注释不是#了,不是了,不是了,不是了


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

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

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

4063字,8个父项,4个子项,6个孙子项,2个重孙子项


快捷翻页

博主的其他优质文章:

裁剪一个简单的Linux

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

如何在CSDN写高质量博客-How to系列

Apple WWDC23开发者大会——Apple的野心


本文参考文章,书籍

参考文章 

学C++有什么用?C++的未来在哪里? - 知乎

比较C/S、B/S架构之间的区别(原理、优缺点、适用范围)以及主流的Web程序应用平台、Web工作原理_b/s和c/s的区别_MarsYjZ的博客-CSDN博客

https://wenku.csdn.net/answer/18a7406a5b2e4d178d90cda0b3b07288

什么是编译器?为初学者解释 C 语言中的编译器

为什么汇编写的程序可移植性差? - 知乎

如何更好理解C/C++的可移植性? - 知乎

ISO - Search

详解C/C++代码的预处理、编译、汇编、链接全过程 - 知乎

 Clang 16.0.0 Release Notes — Clang 16.0.0 documentation

[转]void main()还是int main()_c语言中void可以省略吗?_知足--常乐的博客-CSDN博客

参考书籍 

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

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月22日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包