- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指针与字符 字符处理是数据处理中十分常见的情况,使用指针变量来处理字符可以提供很多便利。字符指针就是指向字符型内存空间的指针变量,一般的定义语句如下: char * p = NULL; 使用字符指针可以访问字符数组和字符串。 【范例15-9】该例演示了字符指针和字符串的一些特性 1.【考题】写出以下程序的输出结果。 #include stdio.h int main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(a+1); printf(%d,%d,*(a+1),*(ptr-1)); } 1-* 第15章 再 论 指 针 杨章伟 e-mail:yang505412@163.com 课程内容安排 指针与数组 指针与二维数组 指针与字符 void型指针 小结 习题 指针与数组 C语言中,指针和数组存在很多相似点,是学习的难点。指针也可以用来指向数组或指向数组中的一个元素。当指针指向一个数组时,可以通过指针来访问数组中的元素。 指向数组元素的指针是指一个指针变量,其指向的空间属于一个数组中的某一个元素。例如,有一个int型array数组,其定义如下: int array[10] = {0}; 其第0个元素的地址为a[0],由于该地址存储的是int型数据,所以可以将该地址赋值给一个int型指针,如下所示。 int * p0 = array[0]; 这样,指针变量p0便指向数组的第0个元素。 指针变量的定义 C语言中指针类型由两部分组成:数据类型名和指针操作符。定义指针变量的标准形式如下所示。 数据类型名 * 指针变量名; 其中,数据类型名可以为任何数据类型,该数据类型名声明了指针变量指向的内存空间存储的数据类型。指针操作符的位置可以和数据类型名紧挨在一起,可以和指针变量名挨在一起,也可以放在中间,而且中间的空格可以为任意多个。 下面是几个定义指针变量的例子。 char * cp; int * ip; float * fp; 数组指针和数组变量 由于数组名的值是一个地址,因此,也可以使用数组名和地址偏移量的组合来访问数组元素。这一点数组名和数组元素型指针是十分相似的。例如: 01 int array[5] = {1, 2, 3, 4, 5}; 02 printf(%d\n, *(array + 2)); /* 输出array[2]的值 */ 上述语句中*(array + 2)可以访问array数组中的第2个元素。但是,数组元素型指针与数组变量在很多方面是不同的 。 【范例15-2】该例演示了数组元素型指针和数组变量的不同 数组指针作为函数形参 当数组作为函数形参时,数组的地址可以用做函数调用的实参。通过数组地址的传递,在函数内便可以对该数组进行访问和修改。在C语言中,数组形参的声明有3种基本形式,本节将对它们进行逐一介绍,并比较各自的特点。在函数一章中已经使用过含有数组形参的函数,其声明形式如下: void print_array(int array[SIZE]); /* 形式1 */ 使用的函数调用语句一般为: #define SIZE 10 … int array[SIZE] = {0}; print_array(array); 指针与二维数组 指针除了可以指向一维数组外,还可以指向二维数组。在前面关于二维数组的讨论中,已经知道C语言中的二维数组可以看做是元素为一维数组的一维数组,其在内存中是转换为一维数组的形式来存储的。 使用指针法访问二维数组有三种方式,分别是使用指向数组元素的指针、使用一维数组型指针和使用二维数组型指针。 二维数组的地址也可以用做函数的形参。使用数组(包括一维数组、二维数组和多维数组)作为形参的关键是能从实参中获得有效的数组地址。 字符指针应用示例 1.字符串的比较 要求使用字符指针实现字符串的比较功能,字符串间的大小比较规则与strncmp函数相同。对于该问题,可以使用两个字符指针分别赋值为两个字符串的首地址。在一个循环结果中比较它们当前指向的结果,每一次比较后都将两个指针后移一位以指向下一个字符元素,直至找到第一个不相等的字符。 2.字符串的复制 要求使用字符指针将一个字符串的内容复制到另一个字符串中。同样使用两个字符指针,将它们初始化为源字符串和目的字符串的首地址。每一次循环将目的字符指针的内容复制到源字符指针指向的空间中,并同时将字符指针后移一位。 字符指针数组 字符串数组是以字符串作为数组元素的数组,其实质上是一个二维字符数组。下面是一个字符串数组的定义: 01 char names[NUM][LENGTH] = { /* 定义并初始化二维数组 */ 02 Nel
文档评论(0)