C++从0到1的入门级教学(一)——C++初识

文章目录

  • 1 C++初识
    • 1.1 入门
      • 1.1.1 简介
      • 1.1.2 输入和输出
      • 1.1.3 头文件名
      • 1.1.5 名称空间
    • 1.2 注释
    • 1.3 变量
    • 1.4 常量
      • 1.4.1 C++定义常量两种方式
    • 1.5 关键字
    • 1.6 标识符命名规则

1 C++初识

1.1 入门

1.1.1 简介

既然是第一次学习,我们就使用大家初学任何编程语言都会用的"hello world"来揭开序幕吧。

//这是第一个程序
#include <iostream>
using namespace std;
int main() 
{cout << "hello world" << endl;system("pause");return 0;
}

在C++中,我们用cout进行字符输出;用//来注释。C++对大小写敏感,所以写cout和COUT是不一样的。C++对拼写也敏感,名字该是怎么样就怎么样,不能拼写错。文件扩展名采用cpp。类比python采用py,java采用java,C采用c

1.1.2 输入和输出

CC++
printfcout
scanfcin

在C++中也可以用C的输入输出关键字,但是必须添加C的头文件,即stdio.h

cout拥有printf两大没有的优点

  1. cout可以智能辨认后面的是字符串还是整型变量,而printf不可以
  2. cout写起来少了两个字母。

1.1.3 头文件名

在下面的代码中我们会看到iostream,我们把这类文件叫做包含文件,又由于他们包含在其他文件中,所以我们叫头文件。在C语言里,头文件类如xxx.h的,其带有后缀h,而在C++中,很多h后缀转为c前缀,意为他们是从c过渡来的;例如C语言中的math.h,在C++中如果要引用他是用cmath。当然,去掉了h后还是要加上名称空间来确定他到底指的是哪个头文件的。

1.1.5 名称空间

如果使用iostream而不是iostream.h,则应该使用下面的名称空间编译指令来使iostream中的定义对程序可用。即using namespace std,这个叫做using编译指令,这个东西前面不细讲,后面再大为介绍,现在做一个了解。

名称空间的支持是C++的一大特性,其作用是让你编写大型程序以及将多个厂商现有的代码组合起来的程序更容易。

比如现在有两个函数,他们都叫cout,但是一个是Microsoft厂商提供的,一个是Pisc公司提供的,那他们两个做这个cout函数的时候,就可以给cout函数的定义放到一个名称空间里,比如Microsoft把cout函数放到一个叫做Microflop的名称空间中,那么记为Microflop::cout;同样的Pisc公司也可以把他们的cout函数记为Piscine::cout

按照我们上面那么说的话,那么我们写代码的时候,cout(输出)和cin(输入)或者其他等等等都是要写成std::cout,cin::cout的。但是为了偷懒,我们既然都是用std对应的厂家做出来的工具,那么我们直接在开局声明using namespace std,然后后面不写std::cout,而是直接写cout了。

实际上偷懒的写法在大型项目是要出问题的,但是我们在学习过程中写的都是练手的代码,所以不需要写那么麻烦。

更好的做法就是开局声明如下:

using std::cout;
using std::endl;
using std::cin;

这样的话就可以精确到你要用的是std的某个工具,而不用使用using namespace std来让你以后用的工具全是std的。

1.2 注释

在代码中加一些说明和解释,编译器编译代码内容时,会自动忽略注释内容。方便自己或其他程序员阅读代码,其有两种格式。

单行注释//描述信息

通常放在一行代码的上方,或者一条语句的末尾,对该行代码进行说明

多行注释/*描述信息*/

通常放在一段代码的上方,对该段代码做整体说明

实际上/**/是C-风格注释,在实际应用中应该尽量使用C++注释,因为这不涉及到结尾符号和起始符号的正确配对,所以他产生的问题很小。

注:如果想要在Visual stdio里面注释一大段可以采用快捷键crtl+k+c

1.3 变量

作用:给一段指定的内存空间起名,方便操作这段内存

语法:数据类型 变量名 = 变量初始值

int a = 10;

示例

#include <iostream>
using namespace std;
int main() 
{//变量创建的语法: 数据类型 变量名 = 变量初始值int a = 10;cout << "a = " << a << endl;system("pause");return 0;
}

在后面的第二章中,我们会着重讲到关于数据类型,到那时候,我们会更好地了解变量。


1.4 常量

作用:用于记录程序中不可更改的数据

1.4.1 C++定义常量两种方式

  • #define宏常量:#define 常量名 常量值

    【通常在文件上方定义,表示一个常量】

  • const修饰的变量:const 数据类型 常量名 = 常量值

    【通常在变量定义之前加关键字const,修饰该变量为常量,不可修改】

示例

#include <iostream>
using namespace std;//常量的定义方法
//1、#define 宏定义
//2、const修饰的变量//1、#define 宏定义
#define Day 7
int main() 
{//2、const修饰的变量const int a = 7;cout << "一周总共有:" << a <<"天"<< endl;system("pause");return 0;
}

1.5 关键字

作用:关键字是C++中预先保留的单词(标识符)

【注:在定义变量或者常量时候,不要用关键字】

C++关键字如下:

asmdoifreturntypedef
autodoubleinlineshorttypeid
booldynamic_castintsignedtypename
breakelselongsizeofunion
caseenummutablestaticunsigned
catchexplicitnamespacestatic_castusing
charexportnewstructvirtual
classexternoperatorswitchvoid
constfalseprivatetemplatevolatile
const_castfloatprotectedthiswchar_t
continueforpublicthrowwhile
defaultfriendregistertrue
deletegotoreinterpret_casttry

【提示:在给变量或者常量起名字的时候,不要用C++关键字,否则会产生歧义】

1.6 标识符命名规则

作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则

标识符不能是关键字
标识符只能由字母、数字、下划线组成
第一个字符必须为字母或下划线
标识符中字母区分大小写

【建议:给标识符命名时,争取做到见名知意的效果,方便自己和其他人阅读】

【注1:C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制】

【注2:以两个下划线打头或以下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符】

注1和注2和前面提到的规则有所不同,因为使用像_time_stop或 _Dount 这样的名称不会导致编译器错误,而会导致行为的不确定性。换句话说就是不知道输出的结果是什么 。不出现编译器错误的原因是,这样的名称虽然是非法的,但是要留给实现使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统分两种更普遍的包,rpm和tar,这两种安装包如何解压与安装

2019独角兽企业重金招聘Python工程师标准>>> RPM软件包管理器&#xff1a;一种用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。rpm -ivh xxxx.rpm <-安装rpm包 -i install的意思 -v view 查看更详细的…

C++类的数组元素查找最大值问题

找出一个整型数组中的元素的最大值。 1 /*找出一个整型数组中的元素的最大值。*/2 3 #include <iostream>4 using namespace std;5 6 class ArrayMax //创建一个类7 {8 public :9 void set_value(); 10 void max_value(); 11 void sh…

ABNFBNF 巴克斯范式

https://www.cnblogs.com/qook/p/5957436.html转载于:https://www.cnblogs.com/ArcherHuang/p/8479897.html

C++从0到1的入门级教学(二)——数据类型

文章目录2 数据类型2.1 简单变量2.2 基本数据类型2.2.1 整型2.2.2 实型&#xff08;浮点型&#xff09;2.2.3 字符型2.2.4 布尔类型2.3 sizeof关键字2.4 类型转换2.5 转义字符2.6 重新谈及变量2.6.1 字面值常量2.6.2 变量2.6.3 列表初始化2.7 数据的输入2 数据类型 2.1 简单变…

大数乘法

很久没手写过大数运算了&#xff0c;以前也都是直接贴模板的&#xff0c;今晚的模拟笔试最后一道大数乘法就没调好&#xff0c;gg…… #include <iostream> #include <string> #include <cstdio> #include <cstring> using namespace std;string num1,…

获取class的名字

ele str.get_attribute(class)&#xff08;获取class的名字&#xff09;转载于:https://www.cnblogs.com/zero-77/p/8482362.html

为什么下了android 4.1 的SDK后在本地用浏览器看api说明文档时,浏览器打开api的html文件很慢?试了好几款浏览器都一样。为什么?...

http://www.oschina.net/question/436724_61401 http://www.google.com/jsapi 他惹的祸 注释掉就可以了&#xff5e; <!-- <script src"http://www.google.com/jsapi" type"text/javascript"></script> --> 很多页面都有&#xff0c;…

深度学习修炼(三)——自动求导机制

文章目录致谢3 自动求导机制3.1 传播机制与计算图3.1.1 前向传播3.1.2 反向传播3.2 自动求导3.3 再来做一次3.4 线性回归3.4.1 回归3.4.2 线性回归的基本元素3.4.3 线性模型3.4.4 线性回归的实现3.4.4.1 获取数据集3.4.4.2 模型搭建3.4.4.3 损失函数3.4.4.4 训练模型3.5 后记致…

5、android使用意图传递数据之全局变量传递

实例&#xff1a; 1、layout的代码 activity_main.xml     <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://schemas.android.com/tools" android:layout_width"match_parent" android:lay…

安装rf所需要的库

1. RF 在两个Python中安装 robotframework 执行命令 pip install robotframework 2. seleniumlibrary 在两个Python中安装 seleniumlibrary 执行命令 pip install --pre --upgrade robotframework-seleniumlibrary 3. RIDE 在Python2中安装 RIDE 执行命令 pip install robot…

CNN for Visual Recognition (assignment1_Q1)

参考&#xff1a;http://cs231n.github.io/assignment1/ Q1: k-Nearest Neighbor classifier (30 points) 1 import numpy as np2 from matplotlib.cbook import todate3 4 class KNearestNeighbor:5 """ a kNN classifier with L2 distance ""&quo…

深度学习修炼(四)——补充知识

文章目录致谢4 补充知识4.1 微积分4.1.1 导数和微分4.1.2 偏导数4.1.3 梯度4.1.4 链式求导4.2 Hub模块致谢 导数与微分到底有什么区别&#xff1f; - 知乎 (zhihu.com) 4 补充知识 在这一小节的学习中&#xff0c;我们会对上一小节的知识点做一个补充&#xff0c;并且拓展一个…

java使用POI jar包读写xls文件

主要使用poi jar来操作excel文件。代码中用到的数据库表信息见ORACLE之表。使用public ArrayList<Person> getPersonAllRecords()获得所有的记录。 1 public class PersonXLS {2 3 public static void main(String[] args) throws IOException {4 5 …

U-boot 打补丁,编译,设置环境变量,

&#xff08;1&#xff09;U-boot 的最终目的是&#xff1a; 启动内核 U-boot 从Flash上读取内核&#xff0c;把内核放到SDRAM上&#xff0c;运行内核 设置环境变量 print  显示出环境变量 set bootdelay 10 save reset  重启转载于:https://www.cnblogs.com/bkyysd/p/42…

深度学习修炼(五)——基于pytorch神经网络模型进行气温预测

文章目录5 基于pytorch神经网络模型进行气温预测5.1 实现前的知识补充5.1.1 神经网络的表示5.1.2 隐藏层5.1.3 线性模型出错5.1.4 在网络中加入隐藏层5.1.5 激活函数5.1.6 小批量随机梯度下降5.2 实现的过程5.2.1 预处理5.2.2 搭建网络模型5.3 简化实现5.4 评估模型5 基于pytor…

Android 应用程序集成FaceBook 登录及二次封装

1、首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台 https://developers.facebook.com/apps 2、创建账号并且获得 APP ID 图一 图二 图三 图四 图五 3、获取app签名的Key Hashes 值&#xff08;两种方式&#xff09; 3.1方法1&#xff1…

IKAnalyzer进行中文分词和去停用词

最近学习主题模型pLSA、LDA&#xff0c;就想拿来试试中文。首先就是找文本进行切词、去停用词等预处理&#xff0c;这里我找了开源工具IKAnalyzer2012&#xff0c;下载地址&#xff1a;(&#xff1a;(注意&#xff1a;这里尽量下载最新版本&#xff0c;我这里用的IKAnalyzer201…

C++从0到1的入门级教学(六)——函数

文章目录6 函数6.1 概述6.2 函数的定义6.3 函数的调用6.4 值传递6.5 函数的常见形式6.6 函数的声明6.7 函数的分文件编写6 函数 6.1 概述 作用&#xff1a;将一段经常使用的代码封装起来&#xff0c;减少重复代码。 一个较大的程序&#xff0c;一般分为若干个程序块&#xf…

PC实用手册

为什么80%的码农都做不了架构师&#xff1f;>>> ##Win10除了Edge/IE&#xff0c;其他浏览器打开和载入速度都很慢 解决办法&#xff1a;以管理员身份运行cmd&#xff0c;输入netsh winsock reset重置winsock&#xff0c;然后重启电脑即可 转载于:https://my.oschin…

MySQL之表的约束

一 介绍 约束条件与数据类型的宽度一样&#xff0c;都是可选参数 作用&#xff1a;用于保证数据的完整性和一致性主要分为&#xff1a; PRIMARY KEY (PK) 标识该字段为该表的主键&#xff0c;可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标…