c语言教学资料:05_指针

c语言教学资料:05_指针

ID:41737576

大小:67.56 KB

页数:9页

时间:2019-08-31

c语言教学资料:05_指针_第1页
c语言教学资料:05_指针_第2页
c语言教学资料:05_指针_第3页
c语言教学资料:05_指针_第4页
c语言教学资料:05_指针_第5页
资源描述:

《c语言教学资料:05_指针》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、本章主要内容:指针的定义及初始化指针的指针指针的运算指针与数组指针数组和数组指针指针与字符串指针与函数1.1指针的概述指针是c语言屮广泛使用的一种数据类型。运用指针编程是c语言最主要的风格Z—。利用指针变量可以表示多种数据结构,能方便地使用数组和字符串,并能像汇编一样处理内存地址。正因为它的灵活多变,初学者往往会感到很困惑。通过本章的学习,我们要玩转指针。利用指针编写程序,跟数组结合使用等等。1.2地址与指针在计算机中,所有的数据都是存放在存储器中的,一般把存储器的一个字节称为一个内存单元。不同的数据类型占用的内存单元是不同的。为了快速、進确的访问这些内存单元,计算机为每一个内存单元进

2、行编号,内存单元的编号也就是内存单元的地址。C语言中,把这个地址叫做指针。1.3指针的定义指针是一种数据类型,基于该类型声明的变量称为指针变量,该变量存放的是内存中的某个地址,和普通的变量一样,在使用指针变量之前应先对指针变量进行声明:类型*指针变量名;〃如int*pNum;“杆表示语句声明的是一个指针变量,类型指定了指针所指的内存单元的数据类型。可以将im*理解成一种复合类型,是指向int型数据的指针。应当注意,下面的语句:int*pNuml,pNum2;声明了一个指针(pNuml)和一个int型变量(pNum2),在一次性声明多个指针时,每个指针变暈名前都要加*,int*pNuml

3、,*pNum2;便一次性声明了两个指针变量。通过sizeof可以计算出指针变量所占用的内存单元始终是4个字节。也就是说任何类世的指针变量都只占用4个字节的内存空

4、'可。如:int*pi;char*pch;double*pf;贝9:sizeof(pi)=sizeof(pch)=sizeof(pf)=4(参见代码Example1)另外,修改指针变暈的值并不会影响到指针所指向的变暈的值。如:inti=8;intj=9;int*pi=&i;pi=&j;i的值始终是8没有改变。1.4初始化指针声明指针变量时,C并不会口动对其进行初始化,这时,指针变量的值是随机的,在内存屮乱指一气,此时,通过指针

5、间接访问所指的内存区域是十分危险的,因为你完全不知道白己在做些什么。通过取地址符(&)给指针变量赋值是个有效的手段,实际上,可以在声明一个指针变量的同吋完成其初始化。intnum=1;int*pN=#上述语句声明了一个指向int型变量的指针pN,并用num在内存中的地址对其赋值。在使用指针前,一般要对其进行初始化(在声明的同吋初始化或赋值),使其有一个确定合适的值,对于无处可指的指针变量,也要将其初始化为NULL(即0,空指针)。如:int*pa=NULL;1.5指针的指针指针变量也是变量,占据一定的内存空间,有地址,因此可以用一个指针指向它,这称为指向指针的指针,或二级指针。

6、可已通过"約声明一个二级指针,如doublenum;double*pN二#double**ppN=&pN;上面的指针可以看成指向double*变量类型的指针,若有需要,还对以定义三级、甚至更高级的指针。1・6指针之间相互赋值C允许同类型的指针间的赋值,如图4.2所示,pNl和pN2是两个相同类型的指针,执行“pN2二pNl;”这样一个赋值操作后,pNl和pN2指向同样的地址,也就是说,两个指针指向同一个内存单元,对*pN2的任何改动都会影响*pNl的值,反Z亦然4.2同类型指针间的赋值(参见代码Example2)1.7指针的运算C语言中指针所能进行的运算是十分有限的,通常有以下

7、几种:指针耳整数的加减(包括指针的自增和自减)、同类型指针间的比较、同类型的指针相减。指针与整数的加减:指针与整数的加减表示指针在内存中向下或向上移动整数个单位。该单位是多少个内存字节取决于指针所指变暈的类型。女mshort类型的每次移动2个字节,double类型的每次移动8个字节。将指针变呈+1,其地址增加的值等于所指向的类型占用的内存字节数。公式:指针变量新值二指针变量当前值+N*指针所指类型占用的内存字节数。(参见代码Example3)同类型指针的比较:两个指针的比较是两个指针保存的地址数值大小的比较,如:pl的值为0x12345678,p2的值为0x12345679,则pl

8、2。同类型的指针相减:两个相同类型指针相减,返冋值是个整数,其值为:(指针1的值・指针2的值)/指针所指向变量的类型所占内存字节数。(参见代码Example4)1・8指针与数组指针与一维数组:在C语言中,指针和数组的关系非常密切,其原因在于凡是能用数组下标完成的操作都可以用指针来实现。可以通过数组的下标唯一确定数组中的某个元素,这种访问方式称为下标法。由于数组的每个元素都相当于一个相应类型的变量,指针变量可以指向一般的变量,当然也可以指向数组中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。