C++ primer plus 的自学笔记

本文是C++ Primer Plus的学习笔记,介绍了C++的基础知识,包括开始学习C++的步骤,如函数头、main()函数、注释、预处理器和iostream文件。详细讲解了函数的组成部分,函数返回类型、形参列表,以及预处理器指令#include的作用。此外,还讨论了C++的注释、名称空间和使用cout进行输出的方法。最后,简要提到了C++的语句、变量、赋值和函数的初步概念。
摘要由CSDN通过智能技术生成

C++ primer plus 的自学笔记

二、开始学习C++

2.1进入C++

C++区分大小写!!!

通常程序包含下述元素:
注释,由前缀//标识
预处理器编译指令#include
函数头:例 int main()
编译指令 using namespace
函数体,用{ 和 }括起
结束函数的return语句

#include <iostream>
int main()
{
	using namespace std;
	cout << ''come up and C++ me some time.";
	cout <<  endl;
	cout << "you won't regret it " << endl;
	
	return 0;
}

2.1.1 main()函数
上图的 int main()叫 函数头,花括号{和}中的部分叫函数体。《函数头》对函数与程序·其他部分之间的接口进行了总结,《函数体》是指出函数应该做什么的计算机指令。每条完整的指令都称为语句。所有的语句都以分号结束。
main()中最后一条语句叫做返回语句,它结束该函数。
函数头
通常,C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口。
位于函数名(例main)前面的部分叫做函数返回类型,其指从函数返回给调用它的函数的信息。
后面的括号中的部分叫形参(参数)列表,指从调用函数传递给被调用的函数的信息。
注:main()通常不被程序的其他部分调用,而被启动代码调用,启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁。
C++中合法的函数头:

int main()
int main(void)

main()中如果结尾未遇到返回语句,则默认添加语句结尾:retrun 0;,不适应于其他函数。

2.1.2 C++注释
为读者提供说明,编译器忽略注释。

	//表示注释,单行注释
	/*注释部分*/ 多行注释

2.1.3 C++预处理器和iostream文件
#include
该编译指令(#include)导致预处理器将iostream文件的内容添加到程序中。像使用cin 和 cout 工具时,就必须要包含文件 iostream。

2.1.4 头文件名
像 iostream 这样的文件叫做包含文件(头文件)。每组头文件都支持一组特定的工具。
对于老式C语言头文件使用扩展名h,c++依然可以使用,例math.h;
c++头文件没有扩展名,有些C头文件被转换为C++头文件,去掉扩展名,在文件名称前加 c (表明来自C语言),例cmath;
对于纯粹的C++头文件来说,没有h的头文件也可以包含名称空间。

2.1.5 名称空间
如使用 iostream,而不是 iostream.h,则应使用名称空间编译指令,例:
using namespace std;
这叫做using编译指令。
名称空间支持旨在让编写大型程序以及将多个厂商现有的代码组合起的程序时更容易,它还有助于组织程序。一个潜在的问题,当使用两个已经封装好的产品,而它们同时使用了wanda()函数。当使用wanda()函数的时候,编译器不知道指的哪个版本。命名空间让厂商将其产品封装在一个叫做命令空间的单元中,这样可以用命名空间来指出想使用哪个厂商的产品。Microflop可以将其定义放到一个名为Microflop的命名空间中。其wanda()函数的全称为Microflop::wanda();同样,Piscine公司的wanda()版本表示为Piscine::wanda()。这样,程序就可以使用命名空间来区分不同的版本。
类、变量和函数是C++编译器的标准组建,它们被放置在命名空间std中。仅当头文件没有扩展h时,情况才是如此。

std::cin>> a;
std::cout <<"jjj";
std::cout<<std::endl;

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

using namespace std #偷懒写法

2.1.6 使用cout 进行输出
①显示消息
cout << “显示的内容”;
与其说是显示一条消息,不如说它将一个字符串插入到了输出流中。

②控制符 endl

cout << endl;

—表示重起一行。如 endl 等对于 cout 来说有特殊含义的符号被称为控制符。和 cout 一样,endl 也是在头文件 iostream 中定义的,且位于名称空间 std 中。

③换行符
—换行的旧式方式:C语言符号 \n:

cout << "what's next? \n";

—\n 被视为一个字符,换行符。和 endl 的差别是,endl 确保程序继续运行前刷新输出(将其立即显示在屏幕上);而使用 \n 则不能。

2.1.7 C++源代码的格式化
C++中分号标示了语句的结尾,回车、空格和制表符的作用相同。

2.2 C++语句

C++程序是一组函数,每个函数又是一组语句,下面介绍其中一些:
【声明语句】创建变量;
【赋值语句】给变量提供一个值。

2.2.1声明语句和变量
—声明语句是用来指出信息存储类型并提供位置标签,例:
—int carrots;
—这条语句提供了两项信息:①需要的内存,具体的说这条语句指出程序需要足够的空间来存储一个整数,int表示整数。②该内存单元的名称,这里该声明语句指出,此后程序将使用名称carrots来表示存储在该内存单元中的值。carrots被称为变量,C++中所有变量都必须声明。
—程序中的声明语句叫做定义声明语句,简称为定义。通常,声明不一定是定义。对于声明变量,C++的做法是尽可能在首次使用变量前声明它。

2.2.2 赋值语句
—赋值语句将值赋给存储单元。例下面的语句将整数25赋给变量carrots表示的内存单元:
—carrots = 25:;
—符号=叫做赋值运算符。C++(和C)可以连续使用赋值运算符。例:

	int steinway;
	int baldwin;
	int yamaha;
	yamaha = balwin = steinway = 88;

—赋值是从右向左进行的。首先,将88被赋值给steinway,然后,steinway的值被赋值给baldwin,继续进行。
—赋值之前可以修改变量的值,比如:

carrots = carrots - 1;

—计算机先将有点意境被赋值的carrots变量25减去1,得到24,然后赋值运算符将该值存储到左边的变量carrots对应的内存单元上。

2.3 其他C++语句

2.3.1 cin
用cin 来读取键盘输入的字符:

cin >> carrots;

从这条语句可知,信息从 cin 流向 carrots。键盘输入的信息将被储存到变量 carrots 中。

2.3.2 使用cout 进行拼接
iostream 文件定义了 << 运算符,以便可以想下面这样合并输出:

cout << "now you have" << carrots << "carrots." << endl;

得到的输出与下述代码生成的相似:

cout << "now you have";
cout << carrots;
cout << "carrots.";
cout << endl;

也可以这样:

cout << "now you have";
	 << carrots;
	 << "carrots.";
	 << endl;

这是由于C++的自由格式规则将标记间的换行符和空格看作是可相互替换的。

2.3.3 类简介
类是用户定义的一种数据类型。类之于对象就像类型之于变量。就是说类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。像 cin 是一个istream 类对象,也是在iostream定义的。

2.4 函数

函数是创建C++程序的模块,对C++的OOP定义至关重要。C++函数分两种:有返回值的和没有返回值的。

2.4.1 有返回值的函数
此函数将生成一个值,,这个值可赋给变量或在其他表达式中使用。例如,标准C/C++库包含一个sqrt()的函数,他返回平方根。若计算6.25的平方根,并将这个值赋给变量X:

X = sqrt(6.25);
  • 表达式sqrt(6.25)将调用sqrt()函数。表达式sqrt(6.25)被称为函数调用,sqrt()函数叫做被调用函数,包含函数调用的函数叫做调用函数。
    括号中的值是发送给函数的信息,这被称为传递给函数。以这种方式发送给函数的值叫做参数。函数sqrt( )得到的结果为2.5,并将这个值发送给调用函数,发送回去的值叫做函数的返回值。

  • 使用函数之前,编译器要知道函数的参数类型和返回值类型。C++提供这种信息的方式是使用函数原型语句。
    函数原型之于函数就像变量声明之于变量。例将sqrt( ) 函数定义成将一个(可能)带小数部分的数字作为参数,并返回一个相同类型的数字。sqrt()的函数原型想这样:

     double sqrt (double);
    

    第一个 double 意味着sqrt()将返回一个double值。括号中的double 意味着sqrt ()需要一个double 参数。

  • 在程序中使用sqrt()时,必须提供原型,可以用两种方法来实现:
    ①在原代码文件中输入函数原型;
    ②包含头文件cmath (老系统为math.h),其中定义了原型。
    第二种方法更好,因为头文件更有可能使原型正确。对于C++库中的每个函数,都在一个或多个头文件中提供了其原型。不要混淆函数原型和函数定义。原型只描述函数接口(发送给函数的信息和返回的信息),而定义中包含了函数的代码,如计算平方根的代码。库文件中包含了函数的编译代码,而头文件中则包含了原型。
    C++允许在程序的任何地方声明新变量,比如在要使用side这个变量时才声明它。C++还允许在创建变量时对它进行赋值,如:

     double side = sqrt (area);
    

2.4.2 函数变体

①有些函数需要多项信息。这些函数使用多个参数,参数间要用分号隔开。例如函数 pow()接受两个参数,返回值以第一个参数为底,第二个参数为指数的幂。该函数原型如下:

double pow (double,double);

要计算5的8次方:

answer = pow (5.0,8.0);

②另外一些函数不接受任何参数。例如rand()函数,还函数不接受任何参数,并返回一个随机整数。该函数原型:

int rand (void);

关键词void 明确指出,该函数不接受任何参数。若省略void ,则C++将其解释为一个不接受任何参数的隐式声明。(建议将原型中的参数和返回值类型都要声明)
③还有一些函数没有返回值。??????????

2.4.3 用户定义的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值