c语言指针的研究与应用.docxVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言指针的研究与应用c语言指针的研究与应用c语言指针的研究与应用

摘要:指针是C语言的精髓部分,也是C语言的重要特色。本文从指针的基本概念出发,结合具体实例对指针的类型进行了分析,并对指针在实际应用中常出现的问题进行了归类总结,希望对初学者理解“指针”这一重要概念有所帮助。 关键词:C语言 指针 数组 函数 指针是C语言中的精髓,它在C语言中被广泛的使用。理解和运用好指针可以灵活方便地处理程序中各种复杂问题,可以轻松完成其他高级程序设计语言不便完成的任务。 一、指针的概念 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。 指针的引入为系统存取数据提供了一种“间接访问”方式。所谓间接访问,是先访问存放变量地址的存储单元,得到该变量的地址,再对变量内容进行访问。 指针变量是一种特殊变量。系统为指针变量分配一块连续存储单元不是供其存储数据,而是存储内存地址。因此,指针变量是存储内存地址的变量。 二、指针的类型 1、指向简单变量的指针。指针所指的数据类可以是简单的数据类型。 例:(1)int*p,i;p=i;意思是指针变量指向整型变量i (2)char*p,a;p=a;意思是指针变量指向字符型变量a (3)int*p,a[10];p=a;意思是指针变量指向数组a 2、指向数组的指针。指针所指的数组既可以是一维数组,也可以是多维数组。 例:main() {inta[4]={2,4,6,8}; int*p; for(p=a;pa+4;p++) printf(“%2d”,*p);} 分析:指针p指向了a数组的首地址,通过p++来访问a数组的每一元素。 3、指针数组。数组元素是由指针变量组成的一种指针。定义如:int*p[2];指针数组p包含两个元素,每个元素指向一个整型数据。 例:main() {int*p[2],i,a[2][2]={1,3,5,7}; for(i=0;i2;i++) p[i]=a[i]; printf(%d\n,*(p[1]+1));} 分析:指针p是一个数组,通过for循环语句给指针数组中的每个指针变量赋值,p[1]的初值为数组a的第二行的首地址,*(p[1]+1)便是元素a[1][1],因此程序输出7。 4、指向指针的指针。指针变量指向的是指针的地址,定义如:int**p。 例:main() {inta[2][2]={1,3,5,7}; int*p[2],**q,i; for(i=0;i2;i++) p[i]=a[i]; q=p; printf(%d\n,*(*(q+1)+1));} 分析:指针数组p的各个指针变量指向数组a的各行首地址,q指向指针数组p的首地址,*(q+1)等同p[1],如此,*(*(q+1)+1)便等同*(p[1]+1)也就是a[1][1],因此程序输出7。 5、指向函数的指针。指针变量指向函数的首地址,然后通过该指针变量调用该函数。定义如:int(*p)()。 例:intmax(inta,intb) {return((ab)?a:b);} main() {intmax(int,int); int(*p)();inta,b; p=max;scanf(%d,%d,a,b); printf(max=%d\n,(*p)(a,b));} 分析:int(*p)()表示定义了一个指向函数的指针变量,函数名max代表了函数的入口地址,执行p=max后,p指向了函数max,(*p)(a,b)便是通过p调用函数max。 6、指向文件的指针。C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成一个文件指针,通过该指针来对文件进行操作.定义如:FILE*fP;(fp为文件指针,此时fp不指向任何文件)。 三、指针应用中常见的错误 1、把数据赋给指针变量。指针在使用前必须进行初始化,赋予指针的值必须是地址。 例:main() {inti=6,*p;p=6; printf“(*p=%d\n”,*p);} 正确语句:p=i;“”是一个取变量地址的运算符。 2、指针常量运算错误。程序中常量指针是不能被修改的。典型有数组名指针常量和指向字符串常量的指针。 例:main() {inta[5]={1,2,3,4,5},*p;p=a; printf“(%d\n”,*(++a));} 正确语句:printf“(%d\n”,*(++p)); 3、指针赋值类型不一致 例:main() {int*p,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};p=a; printf(“%d\n”,*p);} 正确语句:p=a[0];或p=a[0][0];如果一定把a赋值给p,必须先将a转换成整型指针类型,如:p=(int*)a;。特别是将多维数组赋值给指针变量时应注意类型匹配。 参考文献 [1]陈建辉,C语言指针探讨[M]·莆田高等专科学校学报,2001 [2]施冬梅,C语

您可能关注的文档

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档