C++自学教程第一课——你好世界,我是柠檬鲸。
C++系列教程现在在自己学校的一个博客平台发布,几个朋友一起搭建的
[C++基础教程系列](https://blog.ytmaxoj.org/cpp_basic_liuary-0/)
下面是原来的正文
大家好啊,一年一度的柠檬节——额,好像不止一度的柠檬节,它又到了!在这个悲伤的日子,我决定开启一个C++的教程,主要是为了复习自己的C++知识,另外顺便给新手们一个了解C++的方向。
本教程主要面向C++初学者,如果你先前学过C语言或者Java,学起来将会比较轻松一点。
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
在我真正接触编程之前,我向往的一直是Java,因为当时喜欢玩Minecraft,而Minecraft的mod开发需要用到Java,然而在我认识了C++以后,我再也不想碰Java了。
C++的好处和坏处此处也不科普,自行百度。
废话少说,正片开始。
一、创建一个C++项目
虽然我不是很喜欢MS的VS,但不得不说这玩意确实很好用。另外Visual Studio的颜值确实高,虽然我更喜欢Vs code,但是VS code用GNU GCC编译的C++程序中文乱码太烦了,所以还是直接用了VS2019进行C++的开发。
第一步,打开Visual Studio,单击创建新项目。

第二步,选择空项目并点击下一步。

第三步,为项目起个名字、设定位置并且点击下一步。

这样我们就生成了一个空项目。
第四步,在解决方案资源管理器中的 项目名>>源文件 文件夹上右键 添加>>新建项 。

第五步,在 添加新项窗口中左侧点击Visual C++,选择中央的 C++文件,起个名字然后点击添加。

二、HelloWorld!我是一只柠檬鲸
第一步,在代码区输入以下内容:
#include <iostream> // 包含标准输入输出流的库 int main(int argc, char* argv[]) // 标准MAIN函数开场
{
std::cout << "HelloWorld!" << std::endl; // 单个字符串输出并换行
std::cout << "我是一只"; // 单个字符串输出并不换行
std::cout << "柠檬" << "鲸" << std::endl; // 多个字符串输出并换行
return ;
}
第二步,选择Debug X86 ,并且点击本地Windows调试器。

第三步,控制台窗口弹出,显示输出结果。

PS:如果出现编译问题,先检查代码是否正确,然后仔细对照我前面的操作,看看是否有出入。
三、代码分析
第一行:
#include <iostream>
include是一个计算机专业术语,一指C/C++中包含头文件命令,用于将指定头文件嵌入源文件中。效果等同于将后面括号内包含的文件的全部内容在#include的位置全部写一遍。
iostream的意思是输入输出流,直接点说就是in(输入) out(输出) stream(流),取in、out的首字母与stream合成。这个库的作用就是让你能够在控制台进行输入输出。
第二行:
// 这是一个空行
第二行打个空行纯属个人爱好,因为我觉得这样看起来更好看一些。
第三行:
int main(int argc, char* argv[])
首先我们要知道这个是一个函数,形式上类似数学中的函数,如:f(x) = x + 1,f(1) = 2;
int 表示返回类型是整型,整型表示某变量或常量里面的值只能是整数而不能是小数或者文本等。意思就是后面这一串代码最终会变成一个数字。就像是上面提到的数学函数,f(1)其实最终是一个2。
main 是这个函数的名字。main是C/C++程序的入口,程序从main处开始运行。函数名的意义就类似数学中,f(x),g(x)等,函数名不同,一般其函数(表达式)也不同。
(int argc, char* argv[]) 是函数的参数列表,就类似于 f(x) 中的 x ,就是向函数传递的值。在C++原生代码中,int argc, char* argv[] 不是必须的,也就是说你可以只写一个 int main(),但是建议加上,因为学习某些库多半要用到。
第四、九行:
{ // 函数体 }
我们可以看到main函数后面的内容都被一对花括号{}包裹,这对花括号包含的内容就是函数体,就像是之前的数学函数的例子, f(x) = x + 1, 其中 x + 1 就是函数体。
第五行:
std::cout << "HelloWorld!" << std::endl;
std 在C++语言中,std其实就是standard标准的意思。std是C++预置的一个命名空间,其中包含了许多必要的函数,比如cout、cin、string,你可以在你的代码之前加上
using namespace std;
这样就可以直接使用cout、cin等函数,而不需要std::cout、std::cin。
命名空间,也就是namespace的作用是划定一块区域,用来定义变量等等,然后这些变量只在这片区域有效,离开这片区域必须使用预作用符,比如std::cout,这样就有效避免因为变量名相同导致代码冲突的问题,因此并不建议使用using namesapce,因为可能导致重复定义。
std::cout 的作用是在控制台打印输出后面所有被<<限定的内容,直到本行结束。std::cout本身不换行,因此存在std::endl用来换行,而std::ends可以打出空格。
分号的作用是一行代码的结束。
后面两行的意思相差不大,因此不再赘述。
第八行:
return ;
这一行的意义是函数最终返回了一个值,就像之前的f(1)最终等于2,这里返回一个0,意思是当函数结束,就返回一个0。犹豫在这个例子中,和main函数对接的是控制台,因此返回的0会在控制台出现。

如果你return设置为1,那么返回的就是1,只要你设定的返回值符合返回类型,都可以返回对应类型的值。
return是十分重要的功能,不可忽视,因为后面运用到函数,都需要返回值来进行相应操作。
C++的第一课就这样吧,希望大家能够学到一些知识,如有错误,大佬请指正,谢谢。
C++自学教程第一课——你好世界,我是柠檬鲸。的更多相关文章
- NeHe OpenGL教程 第一课:OpenGL窗口
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- [原创]零基础R语言教程---第一课---认识R语言
教程的录制的确是折腾了一番,一连录了二十多遍,有时候激动的说错了字,有时候不知道下一句说啥.. 不过好在第一课已经搞定了,哈哈. 虽然内容现在看起来还有点简单, 不过牛b也是一个过程嘛. 我会坚持下去 ...
- Android OpenGL教程-第一课【转】
第一课 快速的开始一个Android OpenGL项目 首先,读懂我们的教程,需要有android的初步基础,我们这里只是通过android提供的SDK,来进行OpenGL的学习,所以你必须先学习如何 ...
- Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)
原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每 ...
- EbitenCookBook中文教程 第一课:安装 Ebiten
本文实时更新原址:https://ebitencookbook.vercel.app/docs/CookBook_Start/class1 第一课 安装 Ebiten 欢迎大家来到 Ebiten 中文 ...
- [nRF51822 AK II 教程]第一课,开发环境的配置及背景介绍【转】
低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发 ...
- 160921、React入门教程第一课--从零开始构建项目
工欲善其事必先利其器,现在的node环境下,有太多好用的工具能够帮助我们更好的开发和维护管理项目. 我本人不建议什么功能都自己写,我比较喜欢代码复用.只要能找到npm包来实现的功能,坚决不自己敲代码. ...
- 【Mongodb教程 第一课 】 MongoDB下载安装
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.以window平台 ...
随机推荐
- Java 集合基础详细介绍
一.Java集合框架概述 集合.数组都是对多个数据进行存储操作的结构,简称Java容器.此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中).Jav ...
- httpClient和RestTemplate的使用
1.httpClient的使用 <dependency> <groupId>org.apache.httpcomponents</groupId> <arti ...
- [BZOJ4305]数列的GCD:莫比乌斯反演+组合数学
分析 一开始想的是对恰好\(k\)个位置容斥,结果发现对\(\gcd\)有些无从下手,想了想发现自己又sb了. 考虑对\(\gcd\)进行容斥处理,弱化条件,现在我们要求的是使\(\gcd\)是\(d ...
- Min_25筛初级应用:求$[1,n]$内质数个数
代码 #include <bits/stdc++.h> #define rin(i,a,b) for(int i=(a);i<=(b);++i) #define irin(i,a,b ...
- ArrayList类源码浅析(二)
1.removeAll(Collection<?> c)和retainAll(Collection<?> c)方法 第一个是从list中删除指定的匹配的集合元素,第二个方法是用 ...
- [LeetCode]-algorithms-Reverse Integer
Reverse digits of an integer. If the integer's last digit is 0, what should the output be? ie, cases ...
- java基础--单例模式的7种实现【转载】
转载:http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html 第一种,线程不安全(懒汉模式) 1 public class Sing ...
- P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )
P1364 医院设置 题解 弗洛伊德水过 注意初始化一个大数 0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1 (后面补锅有详细解释) 代码 #include ...
- hibernate的查询
1.条件查询 public List<Weibo> selectOne(int k){ Session session = HibernateUtil.currentSession(); ...
- IDEA给类和方法配置注释模板(参数换行显示)
创建类模板 1.打开设置:File–>settings–>Editor–>File and Code Templates–>Includes 2.输入注释模板 #if (${P ...