论文网首页|会计论文|管理论文|计算机论文|医药学|经济学论文|法学论文|社会学论文|文学论文|教育论文|理学论文|工学论文|艺术论文|哲学论文|文化论文|外语论文|论文格式
中国论文网

用户注册

设为首页

您现在的位置: 中国论文网 >> 计算机论文 >> 计算机理论论文 >> 正文 会员中心
 计算机应用论文   计算机理论论文   计算机网络论文   电子商务论文   软件工程论文   操作系统论文   通信技术论文
对C++中指针的深入研究

摘  要:本文对c++各种类型的指针进行了深刻全面地讨论,把各种指针的常量,变量的声明、赋值和访问都一一列出,这对利用指针开发大型软件的程序员来说无疑是一个非常有力的工具。本文还揭示了指针变量与数组名的内在关系,以及类的静态数据指针与非静态数据指针的根本区别。

关键词:指针类型、指针常量、指针变量、数组名

abstract:all kinds of pointers in c++ are thoroughly and deeply discussed.the constant quantity,variables,the form of endowing with value and access to data are listed like a table.this is undoubtedly a useful tool to a programmer who develops big softwares.the author bring to light the relationship between the pointer variables and the name of number groups.he also reveals the essential distinction between a static pointer and non-static pointer.

keywords:pointer type data,pointer constant quantity,pointer variable,a number group’s name

c++中的“指针”实质上是指针类型的数据,所以指针既有常量,也有变量。wWW.11665.COM但是人们往往只是简单的说“指针”,没有带“常量”或“变量”二字。那么,该“指针”到底是指常量呢还是指变量呢?这个问题要根据它所属的那个整句才能回答。c++中的指针按照它所指向的对象可以划分为变量指针、数组指针、函数指针、对象指针、类的成员数据指针和类的成员函数指针。

一、变量指针

设type代表任意一种基本类型说明符,x是该类型的变量,则:

1、x的指针常量为&x。

2、一个type型指针变量p的声明格式为:type *p;

3、使p指向x,也就是说用&x向p赋值的格式为:①用&x初始化;②在声明了p后向p赋值。

二、数组指针

设a是一个有3行4列个type型变量元素的一个二维数组,则:

1、a有两个意义:①表示这12个type型变量构成的整体。②表示a<0>的地址,即a=&a<0>。

a<0>也有两个意义:①表示a的第一行的4个type型变量构成的整体(a中左下标为0的一行元素);②表示a<0><0>的地址。

2、①声明一个指向type型的有3行4列个元素的二维数组的指针p的格式为:   type(*p)<3><4>;②声明一个指向type型的有4个元素的一维数组指针p1的格式为: type(*p1)<4>;③声明一个指向type型变量的指针p2的格式为:type  *p2。

3、①使p指向a的方式为:用&a初始化p或在声明了p后向 p赋值;②使p1指向a<1>的方式为:用“a+1”初始化p1或在声明了p1后向p1赋值;③使p2指向a<2><1>的方式为:用&a<2><1>初始化p2或在声明了p2后向p2赋值。

4、用 a和*来表示a<2><1>的表达式为*(*(a+2)+1),表示a<0><0>的表达式为**a。

5、按3,①用p和*来表示a<2><1>的表达式为*(*(*p+2)+1);②用p1和*来表示a<2><1> 的表达式为*(*(p1+1)+1);③用p2和*来表示a<0><0>的表达式为:*(p-6);

用p、p1和p2来访问a的元素有很多优越性,如它们及其表达式可以进行++运算和- -运算而指针常量却办不到。

三、函数指针

设一个函数的原型为:type fun (),则:

1、 fun()的指针常量为fun

2、声明一个数据类型为type,形参表为fl的函数指针p的格式为:type (p)(fl);

3、用一个数据类型为type形参表为fl的函数指针只能指向数据类型为type形参表为fl的函数。按(1)和(2),用p指向fun()的方式为:用fun初始化p或在声明p后向p赋值。

4、用p而不用fun来调用fun()的格式为:p(和fl对应的实参表);

四、对象指针

设t是a类的一个对象,a和f( )分别是a的一个公有变量成员和公有函数成员,则:

1、t的指针常量为&t;

2、声明一个指向a类的对象的指针p的格式为:a*p;

3、使p指向t的方式为:用&t初始化p或者在声明了p后再向p赋值。

4、①用p而不用t来表示t. a的格式为:p->a;②用p而不用t来访问f( )的格式为:p-> f( );

五、类的数据成员指针

设t是a类的一个对象,a是a的一个非静态type型成员数据,s是a的一个静态type1型成员数据,则:

1、①a::a的相对指针常量为&a:: a;②a::s的物理指针常量为&a:: s

2、①可以指向a类的type型非静态成员的指针p1的声明格式为:type  a::*p1; ②可以指向a类type型静态成员的指针p2的声明格式为:type 1*p2;

3、①使p1指向a::a的方式为:用& a:: a初始化p1或在声明了p1后向p1赋值;②使p2指向a::s的方式为:用& a:: s初始化p2或在声明了p2后向p2赋值。

4、①用p1而不用a来访问t.a的格式为:t .* p1;②用p2而不用s来访问t.s的表达式为*p2

六、类的函数成员指针

设t是a类的一个对象,f(fl1)是a类的一个type型非静态的函数成员,g(fl2)是a类的一个type1型静态函数成员,则:

1、①a::f( )的相对指针常量为a::f;②a::g( )的物理指针常量为a::g

2、①可以指向a的非静态type型形参表为fl1的函数成员的指针p1的声明格式为type( a::*p1)(fl1);②可以指向a的静态type1型形参表为fl2的函数成员的指针p2的声明格式为:type1(*p2)(fl2)

3、①使p1指向a::f( )的方式是:用a::f初始化p1或在声明了p1后向p1赋值;②使p2指向a::g( )的方式是:用a::g初始化p2或者在声明了p2之后向p2赋值。

4、①用p1而不用f来访问t.f()的格式为:(t.*p1)(实参表);这里的“*”为指针说明符而不是指针运算符;②用p2而不用g()来访问t.g( )的格式为:p2(实参表);

七、指针的特点

1、数据指针+n=数据指针+(n×这个数据的字节数)(n=整数,n为小数不合法)。如:①设p为一个int型指针,则p+2=p的值+8(2×4);②设p1为一个有3行2列个int型变量元素的数组的指针,则p1+2=p1的值+2×24;③设a类有16个字节,p2是一个a类的指针,则p2+2=p2的值+2×16。

2、下面的表达式不合法:函数指针+n。

 参考文献

<1> 谭浩强,《c++程序设计教程》,中国科学技术出版社,1995

<2> microsoft、何晓刚译,《visual c++4.0教程》,科学出版社,1997。

<3> 刘卫东、沈官林译,《数据结构c++语言描述》,北京,清华大学出版社,2000

<4>邱龙、张巍,《c++语言入门》,北京,清华大学出版社,1999

  • 上一个计算机论文:
  • 下一个计算机论文:
  •  作者:王根义 [标签: 指针 ]
    姓 名: *
    E-mail:
    评 分: 1分 2分 3分 4分 5分
    评论内容:
    发表评论请遵守中国各项有关法律法规,评论内容只代表网友个人观点,与本网站立场无关。
    基于ARM控制的1KW零电压零电流全桥DC/DC变换
    汉语介词“给”与韩语助词“—??(ege)”的
    LabWindows/CVI的应用特点
    网络时代的知识载体--浅论计算机作为知识载
    江苏的案例向市场化、全球化、知识化、城市
    计算机毕业论文--学校网络教学
    计算机软件之模具CAD/CAM软件的应用与开发现
    网络型城市规划编制的思考--——以浙江省海
    Visual C++与Delphi/C++Builder之比较及未来
    网络时代不用交税了?--互联网对税收体系的
    基于XML的三层C/S模型
    用VC++6.0为对话框添加最小化按钮和提示条
    | 设为首页 | 加入收藏 | 联系我们 | 网站地图 | 手机版 | 论文发表

    Copyright 2006-2013 © 毕业论文网 All rights reserved 

     [中国免费论文网]  版权所有