C++
洒满阳光的午后
学习不追求快,慢才是快。
展开
-
1.9探讨一下头文件
头文件与其存在的意义随着程序规模的进一步增长,分布在不同文件中的所有函数都需要添加前置声明会是一件很乏味的事,如果可以把所有的前置声明都放在同一个地方,岂不是很方便?C++代码文件(有.cpp后缀的)并非C++程序中唯一常见的文件,另一种文件类型被称为头文件,有时也称包含文件(include file)。头文件通常有.h后缀,但有时也会有.hpp后缀或者根本没有任何后缀名,头文件的原创 2016-09-10 17:51:16 · 357 阅读 · 0 评论 -
0.4开发流程简介
在我们编写和运行第一个程序之前,我们需要更详细地了解C++程序的开发流程,下图概述了简要的开发流程:一、确定你要解决的问题这是“what”的一步,确定问题,表面来看,这是最简单的一步,但也是最重要的一步,这是进行之后所有步骤的基础。以下是几个例子:“我想写一个程序,允许我输入数字,然后计算其平均值。”“我想写一个程序,生成一个二维的迷宫,让用户浏览它。”“我想写一个程序,从一原创 2016-08-20 10:13:00 · 291 阅读 · 0 评论 -
0.1教程介绍
教程简介欢迎来到LearnC++教程,此教程的目标是让学习C++变得更加容易,与许多网站和书籍不同的是,这份教程无需你有任何编程基础,在学习过程中,我们会通过许多详实的例子教会你所有需要掌握的内容。无论你是将C++作为业余爱好还是作为大学课程学习的额外补充,这份教程都会适合你。教程结构导论部分旨在让你了解一些C++的基础知识,C++是如何诞生的?程序是如何运行的?编写程序需要安装什么原创 2016-08-20 10:12:53 · 280 阅读 · 0 评论 -
0.2编程语言简介
现代计算机运算速度非常之快,并且越来越快,但随着速度的提升,计算机本身的机制却带来了很大的限制,电脑本身只能理解非常有限的指令集,我们必须明确地告诉计算机应该怎么做,而程序(也称应用或软件)就是这样一组指令。执行指令的是计算机硬件。机器语言计算机CPU是不能理解C++这样的高级语言的,它只能理解被称为机器代码(或者机器语言、指令集)的东西,这些指令时如何被组织的不在本教程讨论范围内,但有两原创 2016-08-20 10:12:55 · 395 阅读 · 0 评论 -
0.3C与C++简介
C++诞生之前,已经有了CC语言于1972年由贝尔实验室的DennisRitchie发明,起初是作为一种系统编程语言,也就是说是一种编写操作系统的语言,Richie希望它是一种简洁的语言,易于编译,允许高效的内存访问,产生高效的代码,而不需要大量的运行时支持。因此,作为一种相对高级的语言,C语言仍然有许多低级语言的特点,强调独立于特定平台的编程。C语言最终成为了一种十分高效且灵活的编程语原创 2016-08-20 10:12:58 · 456 阅读 · 0 评论 -
1.7前置声明与定义
先来看一个表面看起来没有错误的程序add.cpp。#include int main(){ using namespace std; cout "The sum of 3 and 4 is: " 3, 4) endl; return 0;} int add(int x, int y){ return x + y;}预计结果应为:原创 2016-09-05 16:03:52 · 2499 阅读 · 0 评论 -
1.10预处理器初探
预处理器可以被看作是编译程序时,在编译器之前运行的一个独立程序。预处理器工作时,只是简单地从头至尾扫描代码,寻找其中的预编译(也称预处理)指令。预编译指令是指以#开头,以换行符结尾(而不是分号)的一类特殊指令。预编译指令有多种,比如我们最常见的#include 。预处理器通常比较“愚钝”,它并不懂得C++语法,只能在编译器运行之前对文本进行简单的处理,处理结果最终被发送给编译器。I原创 2016-09-19 21:01:08 · 339 阅读 · 0 评论 -
1.8多文件程序
随着程序的增长,为了组织和重用的方便,常常会将一个程序分为多个文件。使用IDE的一个有点就是它使得多文件程序的组织变得非常容易。你现在已经知道如何创建和编译一个单文件项目,向项目中添加新文件是一件非常简单的事。向Visual Studio项目中添加文件在Visual Studio中,只需右击界面右侧(或左侧)“解决方案资源管理器”中的“源文件”,选择“添加”->“新建项”,然后选择原创 2016-09-07 16:38:56 · 348 阅读 · 0 评论 -
1.10a头文件保护符
在《1.7前置声明与定义》中,一个标识符只能被定义一次,如果重复定义,就会产生编译错误。int main(){ int x; int x; // 编译错误:重复定义 return 0;}同样,一个函数如果被重复定义也会产生编译错误。#include int foo(){return 5;} int foo() // 编译错误:重复定义{原创 2016-10-20 11:05:04 · 660 阅读 · 0 评论 -
异或加密算法
异或加密是通过使用布尔代数中的异或函数(XOR)实现的,XOR是一个二元运算符(即有两个参数,类似加号),按其名称“异或”容易推断两个参数中有且仅有一个为真(即两参数相异)时,结果返回真,真值表如下:ABA XOR BTTFTFTFTTFF原创 2016-11-17 14:18:43 · 9569 阅读 · 0 评论 -
2.1详解变量的定义、初始化与赋值
这一节我们将继续《1.3变量初探》的内容。在前的课程中我们谈到,变量其实就是一块内存空间的名称。简要地说,计算机拥有可供程序使用的随机存取存储器(RAM),当一个变量被定义时,一部分内存就会被预留给这个变量。内存的最小单位是二进制数字(binary digit,bit,比特),0或者1。你可以把bit想象成传统的电灯开关——要么是关的(0),要么是开的(1),不存在两者之间的状态。原创 2017-01-16 15:39:34 · 7301 阅读 · 0 评论 -
2.2-void
void是最易于解释的数据类型,因为void的意思就是“无类型”,因此,void类型不能用来定义变量。void value; // 错误void通常用于以下几种情形中:(1)也是最常用的,表示函数不返回任何值。void writeValue(int x){ std::cout "The value of x is: " std::endl; // 无返回语原创 2017-01-16 18:39:10 · 245 阅读 · 0 评论 -
2.3-变量的大小与sizeof操作符
从2.1节《详解变量的定义、初始化与赋值》的学习中我们了解到,现代计算机的内存通常是按byte大小的单元进行组织的,每个单元都是唯一的标识地址,从这个意义讲,我们可以形象地把内存看成一系列文件夹/邮箱,可以用来存放和检索信息,变量就是用来访问这些文件夹/邮箱的名称。但是,这样的类比从某方面看也是不准确的——大多数的变量实际上占用超过一个字节的内存,单个变量可能使用2个、4个甚至8个连续的内原创 2017-01-16 18:40:14 · 414 阅读 · 0 评论 -
2.4-整型变量-溢出与整数相除
整型变量即仅能保存整数的变量,C++中有5种基本的整数类型可供使用:类别数据类型最小占用内存注字符型char1 byte 整型short2 bytes int2 bytes现在通常占 4 bytes long4 bytes long long8 byt原创 2017-01-26 12:08:29 · 2413 阅读 · 0 评论 -
0.5安装集成开发环境(IDE)
上一节已经提到,集成开发环境包含了开发所需的编辑、编译、链接、调试等所有程序,所以我们也来安装一个。最先想到的问题是,“选哪一个IDE呢?”,记住可选的IDE有很多,没有对错之分。本教程将展示一些使用IDE调试程序的技巧。我们所有的例子都会使用微软的VisualC++(Windows中)或Code::Blocks(Linux或Windows中),因此我们强烈建议您使用其中之一。当然,如果原创 2016-08-20 10:13:03 · 471 阅读 · 0 评论 -
0.6编译你的第一个程序
在写第一个程序之前,我们先来大致了解一下开发环境。第一点,我们需要知道,程序是写在.cpp文件中的,而.cpp文件需要被添加到项目(project)中,project保存了所有需要编译的文件名和IDE的各种设置。每次重新打开项目,IDE都会恢复到你上一次离开时的状态。当我们选择编译程序时,项目就会告诉编译器和连接器哪些文件需要编译和连接。值得注意的是一个IDE中的项目文件是不能在另一个IDE中原创 2016-08-20 10:13:05 · 388 阅读 · 0 评论 -
0.6a解决方案配置
解决方案配置(也称生成目标)是决定IDE如何生成项目的一系列项目设置集合,通常包括生成的可执行文件的命名、可执行文件的存放目录、IDE寻找其余代码和头文件的目录、是否保留或排除调试信息以及编译器将以何种程度优化你的程序。不过一般来说,使用默认设置即可,除非你有特殊需求。每当你创建一个新项目时,IDE通常都会为你准备两个解决方案配置:发布配置和调试配置。调试配置用来帮助你调试程序,开发程序时原创 2016-08-20 10:13:08 · 360 阅读 · 0 评论 -
C++教程
文章归档2016年八月 (10)17: 【漫画】Java正在死去? (0)16: 10个最受欢迎的免费WordPress主题 (0)15: 降低WordPress网站跳出率的10个小技巧 (0)09: 加速WordPress网站的12个方法 (0)08: 如何选择你的第一门编程语言 (0)06: 为何糟糕的代码随处可见? (0)05: 是谁杀死了MySQL后记 (0)05原创 2016-08-20 10:12:48 · 456 阅读 · 0 评论 -
1.6空白与基本格式
空白是指用于格式化的字符,在C++中主要指空格符、换行符、制表符。C++编译器通常会忽略空白(一些特殊情况除外,比如输出时的空格),所以下面几个语句是一样的。原创 2016-08-20 10:21:08 · 395 阅读 · 0 评论 -
1.5运算符初探
在《1.1程序的结构》中,我们把表达式定义为一个可以计算值的数学实体。然而数学实体这个概念是有些模糊的,更精确地说,表达式是用来计算值的常量、变量、函数、和运算符的结合体。常量常量是直接插入到源码中的固定值(硬编码),比如5或者3.14159。常量的值就是自身,看下面这个例子:原创 2016-08-20 10:21:06 · 327 阅读 · 0 评论 -
1.4d关键字与标识符的命名
关键字C++保留了73个单词供自己使用,这些单词称为关键字,每个关键字都有特殊含义。以下是关键字列表(C++11):alignas **alignof **asmautobool *breakcasecatchcharchar16_t **char32_t **classconstconstexpr **const_cast *continued原创 2016-08-20 10:21:01 · 731 阅读 · 0 评论 -
1.4c变量的作用域
从1.3节我们已经得知,当CPU执行intx;时,一个名为x的变量就会被创建,那么接下来自然就会问,这个变量什么时候会被销毁(释放占用的内存)呢?变量的作用域决定了在其生命周期中,谁可以“看见”和使用这个变量。不管是函数参数,还是函数体中声明的变量,都有其作用域。局部变量在定义时被创建,离开作用域后被销毁。考虑下面的程序:#include int add(int x, int原创 2016-08-20 10:20:56 · 370 阅读 · 0 评论 -
1.4b为什么使用函数,如何高效地使…
目前为止,我们已经了解到了什么是函数以及函数的基本功能,下面我们再来探讨一下为什么要使用函数。为什么要使用函数?刚开始学习编程的时候,常会有人问,“不能把函数里的代码直接放在main()里吗?何必要写得这么麻烦呢?”,在程序非常简单的情况下,这么做确实无可厚非。但是,函数提供了一系列的好处,使得它们在复杂的程序中变得十分有用,所以我们希望你能够在一开始就能养成写函数的好习惯。有组织—原创 2016-08-20 10:20:51 · 249 阅读 · 0 评论 -
1.4a函数的形参与实参
(译者注:出于简化的目的,C++标准使用参数argument来表示实参,使用参量parameter来表示形参,以下不作区分,视情况使用)函数的参量和参数前面的课程中我们已经知道,被调用的函数将向调用它的函数返回一个值,称为返回值。许多情况下,向被调用的函数传递一个值是非常有用的,以便其按照传递给它的数据工作。比如我们要写一个能够实现两个数相加的函数,那么调用这个函数的时候就需要告诉它把原创 2016-08-20 10:20:49 · 342 阅读 · 0 评论 -
1.4函数与返回值初探
函数函数是一段可重复使用的语句序列,常被设计用来实现某些特定功能,我们已经知道,每个程序都必须有一个main函数,程序从那里开始执行,然而很多时候,一个程序都有多个函数。你的程序常常会为了做其他事而中断正在做的事,生活中我们也常常这样,比如你现在正在读一本书,突然想起来要打个电话,于是你放个书签在书中,去打了电话,打完之后又回来从书签的地方继续看书。C++程序的工作方式也是这样,程序在原创 2016-08-20 10:20:46 · 325 阅读 · 0 评论 -
1.3a初识cout、cin与名称空间
std::cout如前面章节所提,std::cout可以用来向控制台输出文本,看下面的Hello World程序回忆一下。#include int main(){ std::cout "Hello world!"; return 0;}为了实现在一行输出多个内容,输出操作符#include int main(){ int x = 4;原创 2016-08-20 10:20:44 · 567 阅读 · 0 评论 -
1.3变量、初始化与赋值初探
变量一个例如x=5的语句意义已经显而易见:将5分配给x,那么我们要问了,x是什么?x就是我们所说的变量。C++中,变量的实质是一块用于存储信息的内存区域的名称,你可以把它想成一个邮箱,或者一间小屋,可以存放或取回信息。所有的电脑都有内存,称为随机存取存储器(RAM,randomaccess memory),供程序使用。当定义一个变量时,一块内存就会被留出来使用。这一节,我们暂时只考虑原创 2016-08-20 10:13:17 · 368 阅读 · 0 评论 -
1.2注释及注释的规范
注释的类型注释是插入在代码中的、用来解释程序的一行或多行文字,C++中有两种注释。一是以//开始的单行注释,告诉编译器忽略这一行中//之后的所有内容。例如:std::cout "Hello world!"; // 本行从这开始的内容会被忽略.通常,单行注释用来对单行进行简短的注释。std::cout "Hello world!" std::endl; // cout、en原创 2016-08-20 10:13:15 · 598 阅读 · 0 评论 -
1.1程序的结构
计算机程序的实质是告诉计算机做什么的指令序列。语句和表达式程序中最常见的指令类型是语句,语句是C++语言中最小的独立单元,类似于人类语言中的一个句子。我们写句子是为了表达想法,而C++中语句是为了向编译器传达要其执行的任务,每个语句都以英文的分号结束。C++中有许多不同种类的语句,以下是一些最常见的简单语句类型:int x;x=5;std::cout<<x;int原创 2016-08-20 10:13:13 · 307 阅读 · 0 评论 -
0.7常见C++问题解答
这一节我们将讨论一些新手程序员有很高几率碰到的问题。篇幅所限,无法列出全部问题,暂为一些基本的问题提供务实的解决方案,后续也会根据读者的需求加以补充,欢迎提问。问题一:从IDE运行程序时,控制台窗口闪烁一下然后迅速关闭怎么办?答:某些编译器在程序运行结束后不会自动暂停,比如Bloodshed的DevC++。如果遇到这种情况,采取以下两步即可解决问题:首先在程序开头添加:#include,原创 2016-08-20 10:13:10 · 888 阅读 · 0 评论 -
C++的类、操作符重载与派生类
1、 类的基本概念定义一个时间类,它能表示时、分、秒,并提供以下操作。编写程序测试类的功能。(1)Time (int h, int m, int s);//构造函数(2) Time (Time const &x) //拷贝构造函数(3) void set(int h, int m, int s);//设置时间(4)Time & increment();//自动加1秒(5)void原创 2017-03-21 23:52:39 · 1050 阅读 · 0 评论