C++知识讲解(一)

       

目录

1.1   进入 C++

1.1.1   main() 函数

1.1.2   C++注释

1.1.3   C++预处理器和 iostream 文件

1.1.4   头文件名

1.1.5   名称空间 

1.1.6   使用 cout 进行 C++ 输出

        1.endl 控制符

        2.换行符

1.1.7   C++格式

后续


该文章将收录在C++讲解的专栏里面,感兴趣的读者可以收藏学习,专栏也会定期更新,我们一起学习加油!】

PS:有兴趣的读者可以去看看《C++ Primer Plus》这本书,里面对C++的讲解非常详细,本文章也是从这本书中进行的学习和理解。

1.1   进入 C++

        跟进入程序第一天一样,我们先来输出一个 “ Hello world! ”以此来开始正式的 C++ 学习。 

//程序清单 1.1

#include<iostream>
int main()
{
	using namespace std;
	
	cout << "Hello world!";
	cout << endl;
	cout << "Welcome." << endl;
	return 0; 
}

显示结果:

Hello world!
Welcome.

--------------------------------

        对于之前接触过其他语言的读者来说,这一部分可能很好理解。但是没有接触过任何语言的读者也不用担心,所有的问题都会在以后慢慢进行讲解。

上述示例包含以下元素:

        1. 注释,由前缀 // 标识。

        2. 预处理器编译指令 #include。

        3. 函数头: int mian()。

        4. 编译指令 using namespace。

        5. 函数体,用 { 和 } 括起。

        6. 使用 C++ 的 cout 工具显示消息的语句。

        7. 结束 mian() 函数的 return 语句。

下面详细介绍这些元素。首先先来介绍一下 mian() 函数。

1.1.1   main() 函数

        程序清单 1.1 的基本框架

#include<iostream>
int main()
{
	.....
    ...
    ..
	return 0; 
}

        这几行表明有一个名为 main() 的函数,并表述了该函数的行为。其中 int main() 是函数头,其后面的 {} 中的部分叫做 int mian() 函数的函数体。函数头对函数与程序其他部分之间的接口进行了总结;函数体是指出函数应做什么的计算机指令。在 C++ 中,每条完整的指令都称为语句。记住在C/C++中都是以分号结束(这一点,从python语言过来的读者可能会不太习惯)。

        mian() 中最后的 return (返回语句),是用来结束该函数的。

1.1.2   C++注释

        C/C++的注释都是以 // 打头,到尾行结束。注释可以位于单独的一行上,也可以和代码部分同行。很多人在写代码的时候不喜欢注释,认为太浪费时间太麻烦了。其实有经常注释的习惯是非常好的,不仅可以让别人更好的理解自己的代码内容,也可以为自己将来重新回顾代码的时候更加的方便,在一些大型的项目中就显得尤为重要。

为便于理解,这里给出两个示例:

//可以独占一行来进行注释


int main()   //也可以与代码同行
{
    .....
    ...
}
/*

C++ 里也可以使用 C 中的这个注释符号

它的好处是可以用于成段的注释

这样就显得很方便

*/

1.1.3   C++预处理器和 iostream 文件

        如果熟悉 C 的读者都明白在编写一段程序前需要写一个预处理文件

#include<stdio.h>

        但是在 C++ 中有所不同,如果程序需要使用 C++ 中的输入或者输出工具时,需要使用下述两行代码

#include<iostream>
using namespace std;

        #include<iostream> 该编译指令导致预处理器将 iostream 文件的内容添入到程序中。这是一种典型的预处理器操作:在源代码被编译之前,替换或者添加文本。

        那么为什么要添加 iostream 文件呢?因为要涉及程序与外部世界的间的通信。其中最典型的便是:从键盘中获取数据(cin);向外输出数据显示(cout)。这里我们就不过多的讲解了。

        注意:使用 cin 和 cout 进行输入和输出的程序必须包含文件 iostream。

1.1.4   头文件名

        学过其他语言的读者应该不陌生。像 iostream 这样的文件叫做包含文件(include file)——由于它们被包含在其他文件中;也叫头文件(header file)——由于它们被包含在文件的起始处。C++ 编译器自带了很多头文件,每个头文件都支持一组特定的工具。熟悉 C语言 的读者都明白,C 的传统是,头文件使用扩展名 h,将其作为一种通过名称标识文件类型的简单方式。

举个例子:

#include<stdio.h>
#include<math.h>   //支持各种C语言数学函数的头文件

        但是在C++的用法变了。现在对老式 C 的头文件保留了扩展名 h (C++ 程序仍然可以使用这种文件),而 C++ 的头文件没有扩展名,在原有的基础上去掉扩展名 h 使之成为 C++ 风格的名称。

同样举个例子:

#include<iostream>
#include<cmath>    //支持各种C语言数学函数的头文件

        可以看出 C/C++ 二者的区别。下 表1.1 对头文件得到命名约定进行了总结。 

头文件命名约定

头文件类型约定示例说明
C++旧式风格以 .h 结尾iostream.hC++程序可用
C 旧式风格以 .h 结尾math.hC/C++程序可用
C++新风格没有扩展名iostreamC++程序可用,需使用 namespace std
转换后的 C加上前缀 c,没有扩展名cmathC++程序可用,可用不是 C 的特性,如 namespace std

表 1.1(来源:《C++ Primer Plus》)

1.1.5   名称空间 

        如果使用 iostream ,而不是 iostream.h ,则应使用下面的名称空间编译指令来使 iostream 中的定义对程序可用:

using namespace std;

        这个叫做 using 编译指令。这里不需要过多的了解,但是我们需要知道一些情况:

//程序清单 1.2

//如果不使用 using namespace std;

#include<iostream>
int main()
{
	std::cout << "Hello world!";
	std::cout << std::endl;
	std::cout << "Welcome." << std::endl;
	return 0; 
}

显示结果:

Hello world!
Welcome.

--------------------------------

        结果和 程序清单1.1 没有区别,但是中间的却有所不同—— 程序清单1.2 种使用的是 std::coutstd::endl 这两种,原因就是因为没有使用 using 编译指令。所以这些区别请大家要注意一下。

1.1.6   使用 cout 进行 C++ 输出

        这里我们简单介绍一下它的用法,对于其内部的过程就不过多的赘述了:

        如何在 C++ 种显示一条消息?

        熟悉 C 的读者应该知道在 C 中的输出是 printf()函数,接受数据的是 scanf();但是在 C++ 中却不是这样。在 C++ 中我们使用 cout << 的方式来进行:

cout << "Hello world!";

这样就在界面上显示了 “ Hello world! ” 的消息,其实通过 << 的方向也可以明白,其数据的传输方向是传输给 cout 的,这个就仅仅解释到这里即可。

        1.endl 控制符

        现在来看看另一段代码:

cout << endl;

        这一段代码显示出来其实就是换行的作用,说的官方一点就是:重起一行。诸如 endl 等对于 cout 来说特殊含义的特殊符号被称为控制符(manioulator)。和 cout 一样,endl 也是在头文件 iostream 中定义的,且位于名称空间 std 中。

通过这些我们会发现一个有趣的地方:在打印字符串时,cout 不会自动移到下一行,因此如果我们按以下方式去写代码:

cout << "The Good, the";
cout << "Bad, ";
cout << "and the Ukulele";
cout << endl;

那么其输出结果为:

The Good, theBad, and the Ukulele

这时为了保证代码的可观赏性 cout << endl; 就显得尤为重要了。

        2.换行符

        C++ 中还提供了另一种在输出中指示换行的旧式方法:C 语言符号 \n

cout << "Hello world!\n";

        这个对于熟悉 C语言 的读者来说可以跳过。其实效果跟上述的一样,可以减少输入量。

另一方面,如果要生成一个空行,大多数人选择输入 endl (本人也是,可能是习惯导致):

cout << "\n";  //生成空行

cout << endl;  //生成空行

换行符是一种被称为 “ 转义序列 ” 按键组合。

1.1.7   C++格式

        一个好的程序不仅仅是它可以正常运行,还要有一定的规范化以及可观赏性,所以我们在以后编写程序时可以遵循下面的规范:

        1. 每条语句占一行。

        2. 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行。

        3. 函数中的语句都相对于花括号进行缩进。

        4. 与函数名称相关的圆括号周围没有空白。

前三条规则旨在确保代码清晰易读;第四条规则帮助区分函数和一些也是用圆括号的C++内置结构(如循环)。

后续

        学习的过程不能一蹴而就,因此长篇大论未必是有效的学习,故本篇的讲解到此先告一段落,希望大家可以认真看完并且理解。

下一篇将讲解——C++ 语句(函数的调用等等)。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值