【C++】C++教程之C++开始

开始

  本文介绍C++语言的基本元素;包括内置数据类型、对象的定义、表达式、语句、函数的定义和使用。本文将给出一个最小的合法C++程序,主要用它来讨论程序的编译过程、预处理,并将首次介绍C++对输入输出的支持。                                           


1、C++程序

在C++中,动作被称为表达式(expression)。以分号结尾的表达式被称作语句(statement)。C++中最小的程序单元是语句,在自然语言中,与此类似的结构是句子。例如下面是一组C++语句:

int book_count = 0;
book_count = books_on_shelf + books_on_order;
cout<<"The value of book_count:"<<book_count;

第一条语句是一个声明(declaration)语句,book_count被称为标识符(identifier)符号变量(symbolic variable,简称变量),或者对象(object),它定义了计算机内存的一块区域,并且与名字book_count相关联,被用来存储整数值。0是一个文字常量(literal constant),book_count被初始化为0。

第二条语句是一个赋值(assignment)语句,他把book_on_shelf 和 book_on_order 的值相加,并把结果放入与book_count相关联的计算机内存区域内。这里假定book_on_shelf 和 book_on_order已经在前面的代码中声明为整型,并赋了初值。

第三条是输出(output)语句,cout是与用户终端相关联的输出目标。<< 是输出操作符,该语句向 cout(即用户终端)先输出用引号括起来的字符串文字,然后输出存储在与名字book_count相关联的内存区域中的值。假设此时book_cout中的值为11273,那么输出结果为:

                    the value of book_count: 11273 

把语句按逻辑语义分组,就形成了一些有名字的单元,这些单元被称为函数(function)。例如:把所有需要读取销售文件的语句组织到一个被称为readIn()的函数中。类似的,我们可以构成sort()、compact() 和 print()函数。

在C++中,每个程序必须包含一个被称为 main() 的函数,它是由程序员提供的,并且只有这样的程序才能运行。下面是按前述算法定义的一种 main()函数:

int main()
{
    readIn();
    sort();
    compact();
    print();
    return 0;
}

C++程序从 main() 函数的第一条语句开始执行,在本例中,程序从函数readIn()开始。并且程序按顺序执行 main() 函数中的语句。在执行完 main() 函数的最后一条语句之后,程序正常结束。

函数由四部分组成:返回类型、函数名、参数列表以及函数体。前三部分合起来称为函数原型(function prototype)。

参数列表由小括号括起来,包含一个或多个由逗号分开的参数。函数体由一对花括号括起来,由程序语句序列构成。

在本例中,main()函数的函数体调用函数 readIn()、sort()、compact()和print(),当这些函数都调用完成时,语句 return 0;将被执行。return 是C++预定义语句,它提供了终止函数执行的一种方法。当 return 语句提供了一个值时,例如0,这个值就成为函数的返回值(return value)。本例中,返回值为0表示main()函数成功执行完毕。(标准C++中,如果main()函数没有显式地提供返回语句,则它缺省返回0。)

现在我们来看一下,如果想让我们的程序能够执行起来,我们还需要做那些准备工作。首先,必须提供readIn()、sort()、compact()以及print()地定义。下面的哑函数实例已经足够满足这个要求了。

void readIn() { cout<<"readIn()\n" };
void sort()   { cout<<"sort()\n"   };
void compact(){ cout<<"compact()\n"};
void print()  { cout<<"print()\n"  };

void用来指定一个没有返回值的函数。正如上面的定义所示,每个函数在被main()函数调用时只会简单地在用户终端上显示他的存在,以后会用真正地实现函数来代替这些哑函数。

程序源文件地名字,一般包括两部分:文件名以及文件后缀。文件后缀一般用来标识文件内容。

以下为一个完整地函数:

#include <iostream>
using namespace std;

void readIn(){ cout<<"readIn()\n"};
void sort()  { cout<<"sort()\n"  };
void compact(){ cout<<"compact()\n"};
void print() { cout<<"print()\n" };


int main()
{
    readIn();
    sort();
    compact();
    print();
    return 0;
}

iostream是输入/输出流标准文件(注意没有后缀),它包含cout的信息,这对程序是必须的。#include预处理器提示符(preprocessor directive),他把iostream的内容读入我们的文本文件中。

编译器的一部份工作是分析程序代码的正确性。编译器不能判断程序的语义是否正确,但是能够判断出程序形式上的错误,下面该是两个常见的程序形式错误:

  • 语法错误。程序员犯了C++语言的语法错误。例如:

                    int main({           //错误: 缺少)
                              readIn():        //错误: 非法字符
                              sort();
                              compact();
                              ptint();
                              return 0         //错误:缺少“;”
                    }

  • 类型错误。在C++中每个数据项都有一个相对应的数据类型。例如,10是一个整数数值。由双引号括起来的“hello”是一个字符串。如果为一个需要整型参数的函数提供了一个字符串,编译器就会报告类型错误。

错误消息包含一个行号以及编译器对错误的简要描述。按报告的顺序逐一修正错误,是个好的习惯。一个简单的错误常常有很多关联影响,会使编译器报告的错误比实际要多得多,因此,一.旦错误被改正后,应当马上重新编译。这个循环过程通常被称为编辑一 编译一 调试(edit一compile一debug)。

编译器的第二部分:工作是转换正确的程序代码。这种转换被称为代码生成(codegeneration)。 典型情况下,它生成目标代码或汇编指令代码。这些代码能够被运行该程序的计算机所理解。
       成功编译的结果是一一个可执行文件。前面的程序执行时,其输出结果如下:

                      readIn() 
                              sort()
                              compact()
                              ptint()

C++定义了一组内置的基本数据类型:整数类型(int)、浮点数类型(float)、字符类型(char)、以及只有false 和 true 两个值的布尔(boolean)类型。每种类型的都与C++语言中某一个关键字(keyword)所关联,程序中每一个对象都与一个特定的类型相关联。例如下面的代码: 

                      int age = 10;
                              double price = 19.99;
                              char delimiter = ' ';  
                              bool found = false;

定义了四个对象:age、price、delimiter、found,分别是整数类型、双精度浮点数类型、字符类型和布尔类型。每个类型都赋予了一个初值:整数10,浮点数19.99,空格字符,布尔值false。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值