云南大学数学与统计学实验教学中心
实验报告
一、实验目的
1.掌握变量的指针及其基本用法。
2.掌握一维数组的指针及其基本用法。
3.掌握指针变量作为函数的参数时,参数的传递过程及其用法。
二、实验内容
1. 对以下程序进行单步运行,并从中了解变量的指针和指针变量的概念。
# include<stdio.h>
int main()
{
int a=5,b=5,*p;
p=&a;/*指针 p 的指向就是变量 a 的数值*/
*p=8;/*改变变量 a 的数值*/
p=&b;/*改变指针 p 的指向*/
b=10;
return 0;
}
按以下步骤操作:
①输入程序后,连续按三次 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 的值(地址)增加多少?它指向谁?
答:增加 2;指向数组的下一个元素。
④退出循环后,p 指向谁?
评论0