- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中指针教学之我见.doc
C语言中指针教学之我见 摘 要:C语言程序设计是大中专院校理工科的基础课程,其中指针的运用是教学中的难点和重点。正是指针让C语言威力无穷,要想成为一名优秀的C程序员,对指针有一个深入而完整的理解是先决条件。本文通过对指针8个方面的应用,阐述了指针的本质、基本概念和用法。 关键词:指针;地址;数组;字符串;函数 中图分类号:TP312.1 指针是C语言学习中的难点和重点,正是指针让C语言威力无穷,要想成为一名优秀的C程序员,对指针有一个深入而完整的理解是先决条件。在教学中这一部分内容经常让学生觉得疑惑。我在教学中总结了自己的经验,现在把自己对C语言中指针的理解跟大家分享一下。 对于一个内存单元来说,内存单元的地址即为指针,其中存放的数据是该单元的内容,我们可以把内存想象成一个一个的房间,每个房间都有一个房间编号,每个房间可以住不同的房客。其中房间编号就是该存储单元的地址即指针,房间中住的房客即该存储单元的内容。我们用一个变量来保存房号,这个变量就是指针变量。指针变量也是一个变量,只不过里面存放的是地址即指针。指针变量的定义格式如下: 基类型 *指针变量名 其中基类型是指针变量指向的数据的类型,大家可以理解为房间里所住房客的类型。“*”只是一个符号,表示后面的变量是一个指针变量,不是指针运算符。大家可以用sizeof()函数对指针变量进行测试,得到结果是在相同的系统中不论何种数据类型的指针,即不管房间里住什么类型的房客,指针变量的长度是相同的,它都表示的是地址。在C语言中,有两种指针运算符:“”和“*”。“”是取地址运算符,结合性为自右向左,功能是取变量的地址。“*”是取内容运算符,结合性为自右向左,用来表示指针变量所指向的变量。即一个为取地址,一个为取内容。大家注意在指针定义中的“*”不是运算符,不代表任何运算,只是表示后面的变量是一个指针变量,与运算符“*”是不同的。下面从8个方面讲述一下指针的应用。 1 指针指向普通变量 这个是指针最基本的用法。举例如下:int *px;定义了一个指向整型数据的指针变量,可以对它进行赋值,如px=a;把变量a的地址赋给指针变量px,即指针变量px指向变量a。 2 指针指向数组 在C语言中,指针与数组之间的关系十分密切,都可以处理内存中连续存放的一系列数据。举例如下:int a[10];int *px;px=a;px++;指针变量的基类型是数组的类型,即数组元素的类型。C语言中规定数组名是指针类型的符号常量,该符号常量是指向数组首元素的地址,即数组名就是数组首地址。所以可以直接把数组名赋值给指针变量。指针与数组在访问内存时,采用统一的地址计算方法。在进行数据处理时,指针和数组的表示形式具有相同的意义。指针变量也可以带下标。a[i]、*(a+i)、px[i]和*(px+i)这4种表示法全部等价,都是取数组元素的含义。但有一点区别,就是数组名是符号常量,是不能给数组名赋值的。即a=px;是错误的。指针变量px是可以对它赋值的。引用数组元素可以用下标法:a[i]、px[i],和指针法*(px+i)、*(a+i)。在指针指向数组的应用中经常用“++”、“——”和“*”一起使用,这时大家在分析时,注意自增和自减运算符与指针运算符是在同一个优先级,结合性为自右向左,如果有括号,优先计算括号内容,而且要注意自增和自减运算符在变量的前面和后面的区别,一个是先加减后使用,一个是先使用后加减。指针变量的算术运算,加减某一个整数n,不是地址值加减这个整数,而是地址值加减n个单元,每个单元的长度是由数据类型决定的,即px±n表示的实际位置的地址值是px±n*sizeof(type)。如上举例,px++的含义不是地址加1,而是由int数据类型决定的,假设本系统int数据类型为2个字节,则px++的结果为地址px+2。 3 指针指向多维数组 以二维数组为例,int a[3][4];int *p;p=a[0];把二维数组a看作由3个一维数组组成,每个一维数组有4个元素。这时可以把指针看为在行指针列指针中变换。行指针中保存的是列指针。a代表整个二维数组的首地址,是行指针,可以看作指向一维数组的指针的指针,a指向的是列指针。a[0]代表第0行的首地址,是a指向的列指针,即a中的内容是列指针。a+1指向第1行的首地址,指向的也是指针。*a=a[0],*(a+1)=a[1]。用“*”把行指针转换为列指针。如果二维数组的首地址为3000,则a+1为3008(假设一个int数据为2个字节),a+1的含义是a[1]的首地址。用a[0]+1表示第0行第1列元素的地址,其值为3002。a[i]和*(a+i)等价,可以理解为二维数组中的行指针取出的内容为一维
文档评论(0)