- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言实习报告
题目:指针及其应用
系别:
专业:
姓名:
学号:
日期:
一 实验名称:指针及其应用
二 实验目的:
掌握变量的指针及其基本用法。
掌握一维数组的指针及其基本用法。
掌握指针变量作为函数的参数时,参数的传递过程及其用法。
三 实验内容:
运行以下程序,并从中了解变量的指针和指针变量的概念。
运行以下程序,观察a[0]、a[i]和p的变化,然后回答以下问题:
程序的功能是什么?
在开始进入循环体之前,p指向谁?
循环每增加一次,p的值(地址)增加多少?它指向谁?
退出循环后,p指向谁?
你是否初步掌握了通过指针变量引用数组元素的方法?
先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。
编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成:
输入10个数;
调用此函数进行重排;
输出重排后的结果。
四 分析与讨论:
指针的定义方法,指针和变量的关系。
定义方法:
数据类型 *指针变量名;
如定义一个指向int型变量的指针——
int *p;
则我们可以继续写如下代码——
int a = 4;
p = a;
printf(%d, *p);
在这里,我们定义了一个变量a,我们把它理解为内存空间连续的4个字节(int型占用4字节),则这4个字节的空间保存着一个数4。是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p(记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的4个字节,那么这4个字节保存的数就是变量a的地址。printf(%d,*p)和printf(%d,a)的结果是一样的。这里的*是取变量符号(与刚好作用相反,通过变量的地址找到变量),与定义时int *p的*号作用不同(定义时的*表示该变量是个指针变量,而非是取它指向的变量)。指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。 1.指针与数组的关系 当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如: char str[20], *ptr; ptr=str; ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。 2.指向数组元素的指针 若有如下定义: int a[10], *pa; pa=a; 则p=a[0]是将数组第1个元素的地址赋给了指针变量p。 实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=a[0]或p=a。 这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。 3.指针与一维数组 理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。 一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。 实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:数组名[下标表达式],编译程序将其转换成:*(数组名+下标表达式),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*地址=地址所对应单元的地址的内容。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。 数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。 4.指针与多维数组 用指针变量可以指向一维数组,也可以指向多维数组。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 例如,在一个三维数组中,引用元素c[i][j][k]的地址计算最终将换成:*(*(*(c+i)+j
您可能关注的文档
最近下载
- 论文写作与学术规范答案_论文写作与学术规范答案资源.doc VIP
- QCSG-GXPG2084037-2021 分布式光伏并网服务业务指导书.docx VIP
- 宁海博物馆红妆馆设计说明(扩初).doc VIP
- 4.2依法履行义务课件 -2024-2025学年统编版道德与法治八年级下册.pptx VIP
- 2025年国开行政法与行政诉讼法形考任务2试题及答案 .pdf VIP
- 2024-2025学年甘肃省小升初数学试卷及解答参考.pdf VIP
- 工业产品主数据标准通用规范.pdf VIP
- 三龄两历一身份认定表填写标准规范及样表.doc VIP
- 试油气操作规程 课件.ppt VIP
- 5《大学物理学》静电场练习题(马).doc VIP
文档评论(0)