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格式)中文版,源代码在官网上也可以下载到,每 ...
-
[nRF51822 AK II 教程]第一课,开发环境的配置及背景介绍【转】
低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发 ...
-
160921、React入门教程第一课--从零开始构建项目
工欲善其事必先利其器,现在的node环境下,有太多好用的工具能够帮助我们更好的开发和维护管理项目. 我本人不建议什么功能都自己写,我比较喜欢代码复用.只要能找到npm包来实现的功能,坚决不自己敲代码. ...
-
【Mongodb教程 第一课 】 MongoDB下载安装
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.以window平台 ...
-
【Mongodb教程 第一课 补加课1 】windows7 下安装mongodb 开启关闭服务
mongodb在2.2版本开始就不支持windows xp了(我想现在用xp的应该也是带着情怀的一部分人吧,我只是一个工匠而已),windows下server8 R2,64位,32位,只是32位只支持 ...
随机推荐
-
links and softwares
links 普通 http://www.ncpa-classic.com//special/2014gejujie/index.shtml ; 中国大剧院 http://tieba.baidu.com ...
-
SQL中CHARINDEX()/INSTR()函数和SUBSTRING()/SUBSTR()函数
一.SQLServer中的CHARINDEX() 和ORACLE中的INSTR()函数 1.INSTR(C1,C2[,I[,J]]) [功能]在一个字符串中搜索指定的字符,返回发现指定的字符的位置; ...
-
java.util 类 TreeSet<;E>;
java.lang.Object≥ java.util.AbstractCollection<E> ≥ java.util.AbstractSet<E> ≥ java.util ...
-
Java_LIST使用方法和四种遍历arrayList方法
1.List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象. List接口的常用实现类有ArrayList和Linked ...
-
python3 列表 函数
python3中list的所有函数 list是有序的,元素个数无限的,元素类型多样的,可变的 增加 # 'append', 增加对象# 'insert', 指定位置增加# 'extend', 增加可迭 ...
-
jemalloc Mongodb Nginx 优化
下载 http://www.canonware.com/jemalloc/download.html 下载 wget http://www.canonware.com/download/jemallo ...
-
Java面向对象设计
1.少了程序入口会在输出的地方报这个错: Syntax error, insert "... VariableDeclaratorId" to complete FormalPar ...
-
ubuntu的/etc/modules内核模块文件
/etc/modules: 内核模块文件,里面列出的模块会在系统启动时自动加载. /etc/modprobe.d: 存放禁止加载或者加载内核模块脚本的目录. 以下是我增加netfilter模块是的流程 ...
-
[转帖]SAP S4 HANA 1610与ECC的比较
SAP S4 HANA 1610与ECC的比较 https://zhuanlan.zhihu.com/p/27266476 SAP S4 HANA是下一代的ERP套件,是SAP 战略的核心,相关资料也 ...
-
关于vuex和Promise reject 或.catch 的报错处理。
在我们开发过程中,经常会使用vuex来管理接口请求和返回数据. 在vue组件页面使用computed来读取vuex中state的数据. getTaskList({ commit }, payload) ...