首页 理论教育验证了数组与指针的关系及程序正确执行

验证了数组与指针的关系及程序正确执行

【摘要】:此例证明直接用数组取值与用指针法数组取值完全相同,即变量c与d是同一个值。程序点评本例验证了数组与指针的关系。2)变量运算结果及P1口显示证明,程序正确执行。这是一个简单例子,用以说明用地址作为形参进行函数间数据传送。2)输出加法运算结果到P1,P1=00001010=0×0A=10。完成后,返回s,并传送到主函数,输出到P1。

1.【例4-27】 取地址中的内容运算

(1)编辑C语言源程序

(2)编译

(3)执行

程序执行后,P1=00110110=0x36。这里为了区别不同的指针变量定义,*p是不能省略的,在*p后面加入一个字符写为*pa,或写为*pb *px 等。

本例中的程序证明,*pa的运算结果就是a值。因为a的地址是由C语言编译器决定的,无需用户参与。

(4)程序点评

本例执行的结果,证明了取地址运算符和取地址中数据运算符的运算结果。

2.【例4-28】 指针法读取数组内容

(1)编辑C语言源程序

由于pa=a(即pa=&a[0]),也就是将数组a[0]的地址赋予pa,下面关系成立:

(2)编译

(3)执行

1)软仿真。进入仿真,单步执行,当i=0时,c=0x02,d=0x02,P1=00000010=02。可以观察变量及P1输出。

当i=1、2、3时,其输出与数组对应值相同。此例证明直接用数组取值与用指针法数组取值完全相同,即变量c与d是同一个值。

2)下载到实验机。程序执行后,应可以在P1口看到数组内容的变化。

(4)程序点评

本例验证了数组与指针的关系。pa=a就是pa=&a[0],从而得到数组的元素内容,与直接用数组运算是一致的。

3.【例4-29】 用地址作为函数的传送变量(www.chuimin.cn)

(1)编辑C语言源程序

(2)编译

(3)执行

软仿真

1)进入仿真,单击“跟踪”。

2)变量运算结果及P1口显示证明,程序正确执行。

(4)程序点评

函数add(x,y)中,x,y是函数的实参,也是变量a、b的地址。主调函数将此地址变量传送到add()函数的形参*w和*z,在函数中再取地址的内容到变量a、b,并进行加法运算,将结果通过返回值c返回到主函数,并在P1口显示结果。

这是一个简单例子,用以说明用地址作为形参进行函数间数据传送。

4.【例4-30】 用数组名作为函数的传送变量

(1)编辑C语言源程序

(2)编译

(3)执行

1)进入软仿真,单击“跟踪”执行。

2)输出加法运算结果到P1,P1=00001010=0×0A=10。

(4)程序点评

这里,函数传送的实参是一个包括一系列实数的数组a[ ]。实际上是将&a[0]首地址传送给被调函数的形参*f。当被调函数有了首地址,就可以按数组地址的变化*(g+i)调出其中的数据内容s,进行加法运算。完成后,返回s,并传送到主函数,输出到P1。注意,虽然主函数中的变量名s与返回值s同名,但仍然是两个独立的变量,必须在主函数及子函数中分别定义。这一点也是C语言的特点和优点。