没有合适的资源?快使用搜索试试~ 我知道了~
C++语言基础教程吕凤煮著
3星 · 超过75%的资源 需积分: 16 15 下载量 183 浏览量
2014-01-04
09:02:49
上传
评论 1
收藏 296KB DOC 举报
温馨提示
试读
41页
一、C++文件的构成 1、头文件 在创建MFC应用时,类向导会为每个头文件添加宏定义,例如: #if !defined(AFX_ODBCVIEW_H__B82AC4A2_3DBE_4A29_A549_F9939BE498E3__INCLUDED_) #define AFX_ODBCVIEW_H__B82AC4A2_3DBE_4A29_A549_F9939BE498E3__INCLUDED_ 宏定义的目的是防止头文件被重复引用,当编译器编译头文件时,判断当前宏是否被定义,若没定义则进行定义,并编译头文件,否则略过当前头文件 a、引用头文件 使用<>格式引用系统的头文件,例如#include <iostream.h> 使用""格式引用自定义头文件,例如#include "student.h" b、头文件中只提供声明信息
资源推荐
资源详情
资源评论
一、文件的构成
、头文件
在创建 应用时,类向导会为每个头文件添加宏定义,例如:
! "#$%
! "#$
宏定义的目的是防止头文件被重复引用,当编译器编译头文件时,判断当前宏是否被定义,若没定义则进行
定义,并编译头文件,否则略过当前头文件
&、引用头文件
使用'(格式引用系统的头文件,例如)*+',-./&012(
使用33格式引用自定义头文件4例如)*+3-.+.123
5、头文件中只提供声明信息
中允许使用内联函数,将函数的声明和实现放在一起,但是,这样做不容易形成一套风格,建议在头文件
中只提供声明信息,在源文件中提供实现信息,使程序的逻辑结构更加清晰
、源文件
以1)66 为扩展名,源文件中通常包含 部分内容,即源文件版权,版本的声明,对头文件的引用,以及系统功
能的实现代码
二、的基本要素
、标识符
在 语言中,变量、常量、函数、标签和用户定义的各种对象,被称之为标识符
标识符由一个或多个字符组成,标识符可以是字母、数字或下划线,但是标识符的首字母必须是字母或下划线,
而不能是数字
标识符是区分大小写的,且不能与 中的关键字同名
标识符的长度是任意的,但前 7 个字符是有意义的
&、不同类型的对象使用类型作为标识符的前缀
例如:我们定义了一个整型变量,为了表示变量的类型,使用小写字符 做为前缀
.89::年龄
.;,+.9::种类数量
5、成员变量使用 0作为前缀
在定义类的成员变量时,成员变量以 0作为前缀,例如:
089
0<=9
)、类名以 作为前缀
例如:)*&--<.+.9
)*&-->/-,9
、全局对象以 8作为前缀
例如:8,).,9
8?),/-.9
、接口以 为前缀
例如:$@,A9
./&)9
、关键字
关键字是 编译器内置的有特殊意义的标识符,用户不能定义与关键字相同的标识符,在 中,关键
字默认都是以蓝色显示的
、常量
常量,顾名思义,其值在运行时是不能改变的,但是在定义常量时可以设置初始值,在 中可以使用
),-. 来定义一个常量,例如:),-..&B&*+C779
对于常量,编译器会将其放置了一个只读的内存区域,其值不能被修改,但是可以应用在各种表达式中,如果
用户试图修改常量,编译器将提示错误
、变量
其值可以改变的量叫变量,变量提供了一个具有名称(变量名)的存储区域,使得开发人员可以听过名称来
对存储区域进行读写。每一个变量,都具有两个属性,也就通常所说的左值和右值,所谓左值,是指变量的地
址值,即存储变量值的内存地址,右值是指变量的数据值,即内存地址中存储的数据。
例如:.&454)9
变量初始化,即为其设置初始值
例如:.&C79
!、变量的存储类型
&、B./ 存储类型
在此之前,先搞明白,变量的声明和定义
变量的声明:是告知编译器变量的名称和数据类型
变量的定义:将为变量分配存储区域
使用 B./ 关键字定义的变量:表示该变量只声明而不定义。
例如:B./.D&/9
好处:在一个应用程序包含多个文件时,如果在一个文件中定义一个全局变量,若其他文件中要访问该全局
变量,则在另一个文件中通过使用关键字 B./ 声明该全局变量,那么在该文件中就可以访问该全局变量了。
例如:一个文件中定义一个整型的全局变量 D&/; .D&/C79
而在另一个文件中通过 B./ 关键字声明全局变量 D&/,在该文件中就可以访问全局变量 D&/ 了。
B./.D&/;
5、-.&.) 存储类型
在此之前,先明白,局部变量和全局变量
局部变量:是指在函数内定义的变量,在函数调用结束后,局部变量将消失
全局变量:是指在函数体外定义的变量,它的声明周期随着程序的结束而结束
-.&.) 存储类型主要是针对局部变量的,如果定义一个静态的局部变量,它的声明周期在函数调用结束后依
然存在,下次调用函数时,会依然保存上一次函数调用之后的值,并且,对于静态变量只执行一次初始化
-.&.) 存储类型表示变量在函数或文件内是“持久性”变量,通常也被称为静态变量。
全局静态变量:使用 static 在函数外部定义的变量,它的作用域仅限于当前定义的文件,不能够被其他文件
使用 extern 关键字访问,可以认为静态全局变量为半个全局变量(不能够被其他文件共享)
局部静态变量:使用 static 在函数内部定义的变量,当函数调用结束时,变量并不被释放,依然保留其值,
当下一次调用函数时,将应用之前的变量值,它的作用域时当前函数,它不能被外部函数或文件访问。
c、register 存储类型
使用 register 关键字定义的变量,表示变量将被放置在 CPU 的寄存器中。访问的时候比普通的变量快,
register 变量只能用于局部变量或作为函数的形式参数、而不能够定义全局的 register,例如:
register int slocal=10;
对于寄存器变量,程序中不能获得变量的地址,也不能够称为全局变量和静态变量。但可以作为函数的形式
参数
d、auto 存储类型
变量的存储方式主要有两种,静态存储和动态存储。
全局变量、静态变量均属于静态存储,而普通的局部变量属于动态存储
auto 关键字表示变量被动态存储,默认情况下的局部变量均属于 auto 变量(也称为自动变量),定义一个
全局的 auto 变量是非法的,因为全局变量属于静态存储,与 auto 变量相互冲突
注意:在定义变量时,不能同时使用 /8-./、B./、-.&.) 和 &+., 个关键字中的任意两个关键字。
三、数据类型
、简单的数据类型
基本数据类型
字符型
单字符型 )2&/
宽字符型 A)2&/.
整型 .
实型
单精度 E,&.
双精度 ,+5*
逻辑型 5,,*
空值型 D,
构 造 类 型
派生类型
指针 .F6G
引用 .F6H
复合类型
数组 .F6IJ
结构体 -./+).
共用体 +,
枚 举 +0
类 )*&--
、布尔类型
在逻辑判断中只存在两个值,真和假,布尔型可以按整型对的, 表示真,7 表示假。在程序中可以将布尔型对
象赋给整型对象。例如:
5,,*5?.C./+9::定义布尔类型的对象
.&.&C5?.9::定义整型变量,将其初始化为 5?.,即 ;
反之,也可以将整数类型对象赋值给布尔类型的对象。
、数组类型
数组描述的是一组相同数据类型元素的集合。在内存里,数组是连续存储的,数组按维数划分:可以分为一
维、二维、多维数组。
&、一维数组的定义格式: int nArray[5];
程序中可以通过元素在数组中的位置来访问,这被称之为索引访问或下标访问,例如:要访问上面数组中的
第二个元素 //&FIJC79
中数组的下标是从 7 开始的,以数组 //&F 为例,其下标范围是 7K
在定义数组时,数组维数指定了数组中包含的元素数量,也就是说数组长度,数组维数必须大于等于 ,并
且必须输一个常量表达式,即在编译时就能够计算出它的值。
例如:),-..<=C!9::定义一个整型常量
.//&FI<=J9::合法的数组定义
如果去掉“),-.L则是非法的,因为维数是常量表达式,而变量 <= 只能在程序执行到其定义时才能确
定大小
数组初始化,例如: int nArray[5]={4,6,6,7,5};//数组定义并初始化
可以对部分元素进行初始化,例如:int nArray[5]={4,6,6,7};没有被初始化的部分默认为 0;
如果需要将数组中所有元素初始化为 0,可以简写如下:int nArray[5]={0};
b、二维数组定义格式:数组类型 数组名[常量表达式][常量表达式];
在二维数组中,第一维称为行维,第二维称为列维
二维数组初始化,例如:
int nArray[2][3]={{2,3,5},{5,6,7}};
在定义二维数组时,如果需要提供全部元素的初始值,可以省略第一维的长度,但不能省掉第二维的长度,
例如:int nArray[2][3]={5,6,7,4,5,3};
4、枚举类型
在开发应用程序时,经常需要使用一组标记来描述对象的状态,例如一个记录集对象可以有打开状态、编辑
状态和关闭状态,在程序中为了描述记录集的状态,通常定义一组常量,例如:
const int RS_OPEN=1;
const int RS_EDIT=2;
const int RS_CLOSE=3;
如果需要编写一个函数根据参数描述的状态执行相关操作,可以编写一个类似下面的函数
void OperateRecordeset(int nSize)
{
if(nSize==RS_OPEN){//执行打开操作}
else if(nSize==RS_EDIT){//执行编辑操作}
else if(nSize==RS_CLOSE){//执行关闭操作}
}
枚举类型能够很好的解决“编译器并不能限制用户提供的没有意义的参数”,它能够将一组枚举常量与一个枚举类
型名称关联,如果将函数的参数定义为某一枚举类型,则只允许该枚举常量作为函数的实际参数,在 中使
用关键字 +0 定义一个枚举类型,例如:
+0?),/-.<.&.M?<>"4?<N4?<#<O9::定义枚举类型
在定义枚举类型时。可以为各个枚举常量提供一个整数值,如果没有提供整数值,默认第一个常量为 7,第
二个常量为 ,以此类推。
例如:枚举类型作为函数参数
#include "stdafx.h"
#include <iostream.h>
::?<N 的值默认是 RS_OPEN+1,即 4
enum RecordsetState{RS_OPEN=3,RS_EDIT,RS_CLOSE=6};
void OperateRecordset(RecordsetState nState)
{
if(nState==RS_OPEN)
{
cout<<"打开记录集"<<endl;
}
else if(nState==RS_EDIT)
{
cout<<"编辑记录集"<<endl;
}
else if(nState==RS_CLOSE)
{
cout<<"关闭记录集"<<endl;
}
}
int main(int argc,char* argv[])
{
OperateRecordset(RS_OPEN);//调用函数 OperateRecordset
OperateRecordset(RS_EDIT);//调用函数 OperateRecordset
OperateRecordset(RS_CLOSE);//调用函数 OperateRecordset
return 0;
}
5、结构体类型
结构体是一组变量的集合,它能够将不同的数据类型的对象组合成一个整体,以描述一个新的对象,例如:
const int CHAR_LEN=128;
struct Student
{
剩余40页未读,继续阅读
资源评论
- yinpuliusha2016-10-09还可以,就是分太高了
- 稳转2019-10-09没有目录,内容比较乱。
WT-only
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功