C语言实验报告

内容发布更新时间 : 2025/6/18 22:42:53星期一 下面是文章的全部内容请认真阅读。

实验八 指针程序设计

【实验目的】

1.掌握变量的指针及其基本用法。 2.掌握一维数组的指针及其基本用法。

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

【上机实习指导】

1.对以下程序进行单步运行,并从中了解变量的指针和指针变量的概念。 # include “stdio.h” void main()

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

*p=8; p=&b; b=10; }

按以下步骤操作:

①输入程序后,连续按三次F8,使绿条停留在P=&a诵句行上。

②用Ctrl一F7操作分别将a,b,&a,&b,p及*p显示出来。

③查看观察窗口中的内容,可发现此时a、b己有确定的地址(&a和&b)和确定的值,而p还没荷确定的值(此时语句p=&a还未执行),即p还没有明确的指向,因而它所指向的内存单元(*p)中的内容也是不确定的。

④按F8往下执行一步后再查看观察窗中的内容,可发现p已有确定的值,它与&a的值一致,说明p中存放了变量a的地址,也就是说p是指向变量a的指针变量。同时可发现,*p的内容与a的内容一致,

即p所指向的内存单元中的内容就是a的内容;从而可以理解*p等效于a,表示同一内存单元。

⑤按F8往下执行一步后再查看观察窗中的内容,可发现*p和a的内容都已发生变化,从而可理解通过改变指针变量p所指向的内存单元中的内容可以间接地改变a中的内容。

⑥再按F8往下执行一步,可发现p的值己发生变化,它与&b的值一致,说明p已经是指向变量b的指针变量,它不再是指向a,*p的内容也已变为b的内容,从而可理解指针变量的指向是随时可以改变的。

⑦再按F8往下执行一步,可发现,b的值和*p的值都已发生变化,即改变b的内容就等于改变指针变量p所指向的内存单元中的内容。

2.单步运行以下程序,观察&a[0],&a[i])和P的变化,然后回答以下问题: ①程序的功能是什么?

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

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

⑤你是否初步掌握了通过指针变搔引用数组元素的方法? # include “stdio.h” void main()

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

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

41

s+=*p;

printf(“\\n s=%d”,s); }

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

# include “stdio.h”

void main( )

{ int i,s1=0, s2=0, s3=0, s4=0,*p,a[5]={1,2,3,4,5}; p=a;

for(i=0;i<5;i++) s1+=p[i]; for(i=0;i<5;i++) s2+=*(p+i); for(p=a;p

p=a;

for(i=0;i<5;i++) s4+=*p++;

printf(“\\n s1=%d, s2=%d, s

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi