简述C语言指针的应用(全文)_第1页
简述C语言指针的应用(全文)_第2页
简述C语言指针的应用(全文)_第3页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑简述C语言指针的应用(全文)C语言是计算机软件领域最为经典的编程语言之一,尤其在底层驱动、硬件控制等应用领域,更是C语言的价值所在,这是JAVA,C#等新兴高级语言所不具备的优势所在,通过C语言的指针操作系统内存,以及位运算控制系统的各个外部I/O端口,C语言被广泛应用到硬件系统的控制中,指针的应用是C语言的灵魂,指针实现了C语言的灵活性、可变性。以下对C语言中指针的应用与价值进行探讨与阐述。

C语言编程过程中,假设定义一个变量,编译时就为这个变量分配一定长度的内存空间。而在内存区每一个内存单元都有一个地址,用来标识内存单元,在地址所标识的单元存放数据。而正确使用指针变量,区分指针变量和指针的指向变量的含义和用法,判断变量与运算符的结合顺序来确定变量的数据类型以及指向变量或成员变量的类型。通过指针来访问数组元素和下标法数组元素的等价关系,作为函数参数的指针变量,可以改变所指向的主调函数变量的值。动态存储分配、对链表的创建以及相关操作都可以运用指针实现。

类成员的指针,类成员与外部变量相互比较,进行区分的方法就是它所在的域的不同,因为域的不同而决定了变量可以使用的范围,一个指向类的成员函数或者成员变量的指针,就要规范它的参数列表、返回类型,以及被指向变量或函数的域,所以使用类域限定如下:

classNJUPT{staticdoublenumber=20000000;intnum;public:NJUPT():num(10){};intget(){returnnum;};doublegetNumber(){reuturnnumber;}}

在这里定义的成员指针为intNJUPT::*p;//指向int型成员变量int(NJUPt::*)p()//指向intf()型成员函数。

那么调用的方式为:cout<;

返回指针的函数,一个函数的接口是它的返回值,C语言可以自定义类型,我们使用引用作为函数的实际参数,或在函数的实际参数中使用指针。使用一个函数返回一个指针很容易将一个局部变量的地址传出来。例如:

UserType*Process(){UserTypeut(param—list);//processut;return&;ut;//}

变量在函数运行结束已经被销毁,被传出的地址实际已经不存在被释放了。所以很容易出错。另一点是在运用new的时候。易造成内存泄露。

UserType*Process(){UserTpye*put=newUserType(param—list);//processput;returnput;}

在函数内部使用一个new,分配了一个空间传出来。这样就不会发生问题,只是编程过程中通常会忘记在程序的外面把借来的空间还回去而造成内存泄露,所以把函数的参数设定为指针或引用作为代替。

两指针变量相减:所得之差是两个指针所指数组元素之间相差的元素个数。实际上是两个指针值(地址)相减之差再除以该数组元素的长度(字节数)。例如pf1和pf2是指向同一浮点数组的两个指针变量,设pf1的值为2022H,pf2的值为2000H,而浮点数组每个元素占4个字节,所以pf1—pf2的结果为(2000H—2022H)/4=4,表示pf1和pf2之间相差4个元素。两个指针变量不能进行加法运算。例如,pf1+pf2是什么意思呢?毫无实际意义。

this指针的用处:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。例如:调用date.SetMonth(9)SetMonth(&date

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论