欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 信息管理 > 对C++中指针的深入研究

对C++中指针的深入研究

日期:2023-01-24 阅读量:0 所属栏目:信息管理


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

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

abstract:all kinds of pointers in c++ are thoroughly and deeply constant quantity,variables,the form of endowing with value and access to data are listed like a is undoubtedly a useful tool to a programmer who develops big author bring to light the relationship between the pointer variables and the name of number 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++中的“指针”实质上是指针类型的数据,所以指针既有常量,也有变量。但是人们往往只是简单的说“指针”,没有带“常量”或“变量”二字。那么,该“指针”到底是指常量呢还是指变量呢?这个问题要根据它所属的那个整句才能回答。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

本文链接:http://www.qk112.com/lwfw/jsjlw/xinxiguanli/259748.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学