第5章 指 针

第5章 指 针

ID:38514392

大小:172.00 KB

页数:25页

时间:2019-06-14

第5章  指    针_第1页
第5章  指    针_第2页
第5章  指    针_第3页
第5章  指    针_第4页
第5章  指    针_第5页
资源描述:

《第5章 指 针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章指针指针的基本概念5.1指针运算5.2指针与字符串操作5.35.1指针的基本概念5.1.1指针5.1.2指针的定义与引用1.指针的定义所谓指针变量就是用来存放内存地址的变量。指针变量的定义方式如下:类型*变量名1;/*定义单个指针变量*/类型*变量名1,*变量名2…;/*定义多个同类型指针变量*/综上所述,指针变量的特点如下。指针是用来存储对象的内存地址的变量,对象可以是简单类型数据(int,char等),也可以是数组、函数,还可以是另一个指针。指针变量的值只能是内存中存在的一个地址,而不是一个任意的整数。有关指针

2、的说明很多是由指针、数组、函数说明组合而成的。但并不是可以任意组合,例如数组不能由函数组成,即数组元素不能是一个函数;函数也不能返回一个数组或返回另一个函数。2.指针的引用对指针变量的引用,由取地址运算符“&”和取值运算符“*”来完成。取地址运算符“&”在前面的学习中已经见过,例如,在使用scanf()函数进行输入时,就使用了“&”运算符将数据存储到指定的存储空间。3.空指针NULL为指针变量赋值时,还可以用其他的指针或使用NULL来进行。4.使用指针的注意事项指针是C语言中具有强大功能的工具,具有极大的灵活性,可以为程

3、序设计者带来方便,但指针同时也最难掌握,最易出错。如果在程序中指针引用出现错误,轻则程序不能得到正确结果,重则程序崩溃,严重者还会影响其他程序和系统的正常运行,因此,在使用指针时一定要多加注意。5.2指针运算5.2.1指针与数组指针变量除了可以对其引用地址的内容进行运算外,其本身也可进行运算。指针是内存中的一个地址,对指针本身的运算只能是指针在内存中位置的改变,即指针可以作加、减运算,其结果是另一个内存地址。由于指针运算的结果也是一个内存地址,为了使该地址是一个程序中的合法地址,指针的运算通常都是针对数组而进行的。指针可

4、以用来对数组进行访问。数组的指针是指数组在内存中的起始地址,数组元素的指针是指数组元素在内存中的起始地址。数组名也可以理解为一个指针,不过数组名是一个指针常量,不能改变。可以用数组名来将数组的首地址赋给指针。数组指针的定义与普通指针的定义方法相同,数组指针的引用既可以用指针方式来进行,也可以用数组下标方式来进行,如果指针p是指向数组a[]首元素的指针,则*(p+n)等价于a[n],如果指针p是指向数组元素a[k]的指针,则*(p+n)等价于a[k+n]。5.2.2指针的运算在指针进行运算之前,必须先将指针指向一个数组,当

5、指针指向数组时,可以进行如下的运算:指针加上一个整数,结果是指向该数组的另一个元素的地址;指针减去一个整数,结果是指向该数组的另一个元素的地址;指针自增(++),结果是指针指向该数组的下一个元素;指针自减(--),结果是指针指向该数组的上一个元素;两个指针相减(要求两个指针都指向同一数组的元素),结果为两个指针相对移动的元素个数;比较两个指针的大小(要求两个指针都指向同一数组的元素),实质上是比较两个指针所指数组元素下标的大小。5.3指针与字符串操作5.3.1字符串指针可以定义一个字符型指针,使该指针指向字符串起始地址,

6、就可以使用该指针来进行字符串的引用了,这个指针称为字符串的指针。定义字符指针的方式如下:char*指针变量名;/*定义时不初始化*/char*指针变量名=字符串常量;/*定义时进行初始化赋值*/5.3.2字符指针与字符数组1.字符指针与字符数组的关系字符指针也可以用于指向一个字符数组的首地址,以此来引用该字符数组的内容。2.字符指针和字符数组的区别字符数组在定义时,不论是否进行初始化,都会为其分配存储空间,以存储数组的内容,它存储的是字符串本身的内容。字符指针则不同,如果字符指针在字义时没有进行初始化,则不会为其分配字符

7、串的存储空间,而只是分配一个指针变量的存储单元,用于存储指针;如果定义时进行了初始化,则在分配一块连续内存空间存储字符串外,还分配一个存放指针变量的存储单元,并将字符串存储空间的起始地址赋给字符指针。使用指针与数组进行字符串处理时,不同的是,指针可以通过赋值运算进行改变,而数组名则不能改变。字符数组一旦定义,其使用的存储空间就是固定的,在任何时候都可以使用数组名对数组进行访问。字符指针变量只是一个指向内存地址的指针,它在程序中改变后将不再指向原来的内容。字符数组只能在初始化时进行字符串的整体赋值,在程序运行中则不能;而字

8、符指针变量既可以在初始化时进行字符串的整体赋值,又可以在程序运行中进行赋值,因为这个字符指针只是一个指针,在程序中是可变的,在程序中赋值后将指向所赋的字符串的内存起始地址。字符数组名是一个常量,在程序中只能引用,不能改变;而字符指针是一个变量,在程序中可以指向任一位置,因此应该注意指针的位置,以防止引用出错。还有一点

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

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

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