网站大量收购独家精品文档,联系QQ:2885784924

C语言实验报告答案 .pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C语⾔实验报告答案

南京信息⼯程⼤学实验(实习)报告

实验(实习)名称:指针及其应⽤⽇期:得分:指导⽼师:院系:应⽤⽓象学院专业:班次:姓名:学号:实验⽬的

(1)掌握变量的指针及其基本⽤法。

(2)掌握⼀维数组的指针及其基本⽤法。

(3)掌握指针变量作为函数的参数时,参数的传递过程及其⽤法。

⼀.实验内容

(1)运⾏以下程序,并从中了解变量的指针和指针变量的概念。

(2)运⾏以下程序,观察a[0]、a[i]和p的变化,然后回答以下问题:

1.程序的功能是什么?

2.在开始进⼊循环体之前,p指向谁?

3.循环每增加⼀次,p的值(地址)增加多少?它指向谁?

4.退出循环后,p指向谁?

5.你是否初步掌握了通过指针变量引⽤数组元素的⽅法?

(3)先分析以下程序的运⾏结果,然后上机验证,并通过此例掌握通过指针变量引⽤数组元素的各种⽅法。

(4)编写函数,将n个数按原来的顺序的逆序排列(要求⽤指针实现),然后编写主函数完成:

①输⼊10个数;

②调⽤此函数进⾏重排;

③输出重排后的结果。

⼆.分析与讨论

(1)指针的定义⽅法,指针和变量的关系。

定义⽅法:

数据类型*指针变量名;

如定义⼀个指向int型变量的指针——

int*p;

则我们可以继续写如下代码——

inta=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的*号作⽤不同(定义时的*表⽰该变量是个指针变量,⽽

⾮是取它指向的变量)。

(2)数组和指针的关系。

指针与数组是C语⾔中很重要的两个概念,它们之间有着密切的关系,利⽤这种关系,可以增强处理数组的灵活性,加快运⾏

速度,本⽂着重讨论指针与数组之间的联系及在编程中的应⽤。

1.指针与数组的关系

当⼀个指针变量被初始化成数组名时,就说该指针变量指向了数组。如:

charstr[20],*ptr;

ptr=str;

ptr被置为数组str的第⼀个元素的地址,因为数组名就是该数组的⾸地址,也是数组第⼀个元素的地址。此时可以认为指针ptr

就是数组str(反之不成⽴),这样原来对数组的处理都可以⽤指针来实现。如对数组元素的访问,既可以⽤下标变量访问,

也可以⽤指针访问。

2.指向数组元素的指针

若有如下定义:

inta[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.指针与多

文档评论(0)

175****3791 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档