学习C++的第一天,找个文档看看吧
C++学习的最基本知识
(1)进入C++
注意点:
1、C++对大小写敏感,其中编译器也是对拼写敏感的;
2、文件扩展名cpp是一种表示C++程序的常用方法;
3、C++输入输出函数为cin和cout函数,但也可使用printf()和scanf()函数,但要包含常规C语言的stdio.h文件;
4、#include预处理编译指令、int main()作为接口的函数头、using namespace编译指令、结束mian函数的return函数;
5、C++中,语句结束后不能省略分号;
6、如果编译器到达main()函数末尾时没有遇到返回函数,则认为main()函数以return 0结尾;
7、代码#include <iostream>该编译指令导致预处理器将iostream文件的内容添加到程序中,这是典型的预处理器操作:在源代码被编译之前,替换或者添加文本;将iostream文件的内容添加到程序中这一预处理器操作涉及程序与外部世界之间的通信。iostream中io指的是输入和输出。C++的输入/输出方案涉及iostream文件中的多个定义。#include编译指令导致iostream文件的内容随着源代码文件的内容一起被发送给编译器。实际上,iostream文件的内容将取代程序中的代码行#include<iostream>。原始文件没有被修改,而是将源代码文件和iostream组合成一个复合文件,编译的下一个阶段将使用该文件。
8、像iostream这样的文件叫做包含文件——由于它们被包含在其他文件中,也叫头文件——由于它们被包含在文件的起始处。C++编译器自带了很多头文件,每个头文件都支持一组特定的工具。C语言中头文件使用扩展名h,在C++中,对老式C的头文件保留了扩展名h,即C++也可以使用这种文件,但是C++风格的头文件是没有扩展名的,有些C头文件被转换时,会进行重命名,去掉扩展名h,并在文件名称前加上前缀c,如math.h->cmath。有时C头文件的C版本和C++版本相同,而有时新版本做了一些修改。对于纯粹的C++头文件来说,去掉h不只是形式上的改变,没有h的头文件也可以包含名称空间。
9、如果使用iostream,而不是iostream.h,则应使用using namespace std的名称空间编译指令来使iostream中的定义对程序可用。名称空间支持是一项C++特性,旨在让你编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它有助于组织程序。一个潜在的问题是,可能使用两个已封装好的产品,而它们都包含一个名为wanda()函数,这样,使用wanda()函数时,编译器将不知道指的是哪个版本,名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以使用名称空间来指出想使用哪个厂商的产品。因此,Microflop Industries可以将其定义放到一个名为Microflop的名称空间中,这样其wanda()函数的全称为Microflop::wanda();这样,程序就可以使用名称空间来区分不同的版本了。按这种方式,类、函数和变量便的是C++编译器的标准组件,它们现在都被放置在名称空间std中,这意味着在iostream中定义的用于输出的cout变量实际上是std::cout,因此可以省略编译指令using。
10、对于cout<<"Come up";语句来说,从概念上看,输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性是在iostream文件中定义的。cout的对象属性包含一个插入运算符<<,它可以将其右侧的信息插入到流中。
11、endl控制符,其重起一行的作用,和cout一样,endl也是在头文件中定义的,且位于名称空间std中。其中所谓的控制符是像endl一样对cout来说有特殊含义的特殊符号。C++中还提供了一种在输出中指示换行的旧方法,就是在“/n”,一般将其放在字符串的引号中,两者之间的区别在于,endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用“\n“不能提供这样的保证,这意味着在有些系统中,有时可能在你输入信息后才出现提示。
12、源代码中的标记和空白。标记是指一行代码中不可分割的元素,空白则是空格、制表符和回车的统称。标记之间一般用空白来分开。
13、声明不一定是定义,在C++中尽可能首次使用变量前声明它,这意味着将导致编译器为变量分配内存空间,而C中所有变量的声明通常都位于函数或过程的开始位置。
14、对于类ostream和istream类,从技术上说,它们并没有被内置到C++语言中,而是语言标准指定的类,这些类的定义位于iostream文件中,没有被内置到编译器中。
15、类描述了可对类对象执行的所有操作,要对特定对象执行这些允许的操作,需要给该对象发送一条信息。C++提供了两种发送消息的方法:一种是使用类方法;另一种方式是重新定义运算符,cin和cout采用的就是这种方式。
16、例如x=sqrt(6.25),表达式sqrt(6.25)被称为函数调用,被调用的函数叫做被调用函数,包含函数调用的函数叫做调用函数。对于有返回值的函数来说,函数执行完毕后,语句中的函数调用部分将被替换为返回值。因此在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型。如果缺少这些信息,编译器将不知道如何解释返回值。C++提供这种信息的方式就是使用函数原型语句。例如sqrt()的函数原型就像这样:double sqrt(double);函数原型之于函数就像变量声明至于变量——指出涉及的类型。原型结尾的分号表明它是一条语句,这使得它是一个函数原型,而不是函数头。如果省略分号,编译器将这行代码解释为一个函数头,并要求接着提供定义该函数的函数体。但不要混淆函数原型和函数定义,原型只描述函数接口,它描述的是发送给函数的信息和返回的信息,而定义中包含了函数的代码。C和C++将库函数的这两项特性分开了,库函数中包含了函数的编译代码,而头文件只包含了原型.
17、函数变体:有多个参数,如 double pow(double,double);不接受任何参数,如int rand(void);没有返回值,如void bucks(double),这个函数是将数字以美元、美分的格式显示在屏幕上,由于这个函数把值发送给屏幕,而不是调用函数,因此不需要返回值,也不能将该函数调用放在赋值语句或其他表达式中。相反,应使用一条纯粹的函数调用语句:bucks(1234.56)。
18、对于main()函数来说,main函数是一个有返回值函数,所以需要使用关键字return来提供返回值,并结束函数,这就是为什么在main()函数结尾使用语句:return 0;的原因,但是这个返回值到底是返回到哪里了呢?事实上,可以将计算机操作系统看成是调用程序,因此main()函数的返回值并不是返回给程序的其他部分,而是返回给操作系统。
19、让程序访问名称空间std的方法有多种,下面是其中4种:(1)将using namespace std;放在函数定义之前,让文件中所有函数都能使用名称空间std中所有元素;(2)将using namespace std;放在特定的函数定义中,让该函数能够使用名称空间std中的所有元素;(3)在特定的函数中使用类似using std::cout;这样的编译指令,而不是using namesapce std;,让该函数能够使用指定的元素,如cout。(4)完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::,如下所示:std::cout<<" "<<std::endl。
三、总结
1、有多种类型的C++语句,包含下述6种:声明语句、赋值语句、消息语句:将消息发送给对象,激发某种行动。、函数调用、函数原型、返回语句。
2、C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。为ostream类定义的插入运算符(<<)使得将数据插入到输出流成为可能;为istream类定义的抽取运算符(>>)能够从输入流中抽取信息。cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。
3、C++可以使用大量的C库函数,要使用库函数,应当包含提供该函数原型的头文件