C语言实验报告八

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京信息工程大学实验(实习)报告

实验(实习)名称指针及其应用日期2019.5.30 得分指导老师瞿治国

系专业年级2018 级班次班姓名学号

一、实验目的

1.实验目的

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

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

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

二、实验内容

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

# include

int main()

{

int a=5,b=5,*p;

p=&a;

printf("%d ,%ud\n",a,p);

*p=8;

printf("%d ,%ud\n",a,p);

p=&b;

printf("%d ,%ud\n",a,p);

b=10;

printf("%d ,%ud\n",a,p);

return 0;

}

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

①程序的功能是什么?

②在开始进入循环体之前,p指向谁?

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

④退出循环后,p指向谁?

⑤你是否初步掌握了通过指针变量引用数组元素的方法?

# include

int main()

{

int i,*p,s=0,a[5]={5,6,7,8,9};

p=a;

for(i=0;i<5;i++,p++)

s+=*p;

printf("\n s=%d",s);

return 0;

}

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

①输入10个数。

②调用此函数进行重排。

③输出重排后的结果。

三、实验步骤和实验结果

第一个程序输入后

第二个程序输入后

可以知道①程序的功能是计算数组里所有元素的和

②在开始进入循环之前p指向a数组的首地址

③循环每增加一次,p的值增加数组内一个元素字节长度,且指向下一个数组元素

④退出循环后,p指向最后一个元素

⑤已初步了解掌握通过指针变量引用数组元素的方法

第三个程序写出来:

#include

#define N 10

void inv(int *,int);

int main()

{

int i,a[N];

for(i=0;i

scanf("%d",&a[i]);

printf("逆置前:\n");

for(i=0;i

printf(" %d",a[i]);

printf("\n");

inv(a,N);

printf("逆置后:\n");

for(i=0;i

printf(" %d",a[i]);

return 0;

}

void inv(int *x,int n)

{

int *p,*q,t;

p=x;

q=x+n-1;

while(p

{

t=*p;

*p=*q;

*q=t;

p++;

q--;

}

}

运行后

四、分析与讨论

数据的存储地址是指针,它的值是内存单元的地址编号,描述了数据在计算机内存中存储的形式,反映了计算机处理信息的基本过程;利用数组可以实现的功能,指针也可以做到,甚至更方便。

五、实验小结

我们可以认为数组与指针有着一定的区别和联系。数组名是一个静态的指针,而指针变量中的指针是一个动态的量,二者之间关系紧密,有时可以相互替代。

相关文档
最新文档