5.8.2实参和形参间的信息传递 ·在执行过程调用时,首先应把实在参数传送给被调过程, 以便被调过程能对实参执行相应的过程体。 ·所谓把实参传送给被调过程,就是把实参的信息(如实 参的值或地址)送入相应的形参单元之中,在执行过程 体时,就能从形参的形式单元中取得对应实参的值或地 址。 ·可采用两种不同的代码结构来传递实参的信息: 1.先结合,后调用在控制转入被调过程前,将各实参的信息送 入相应形参单元; 2.先用,后结合将实参的信息依次排列在转子指令前,当执 行转子指令而进入过程后,被调过程根据返回地址,找到存放 实参信息的单元位置,再把各实参信息送入相应形参的形式单 元,然后再执行过程的目标代码
5.8.2 实参和形参间的信息传递 • 在执行过程调用时,首先应把实在参数传送给被调过程, 以便被调过程能对实参执行相应的过程体。 • 所谓把实参传送给被调过程,就是把实参的信息(如实 参的值或地址)送入相应的形参单元之中,在执行过程 体时,就能从形参的形式单元中取得对应实参的值或地 址。 • 可采用两种不同的代码结构来传递实参的信息: 1.先结合,后调用 在控制转入被调过程前,将各实参的信息送 入相应形参单元; 2.先调用,后结合 将实参的信息依次排列在转子指令前,当执 行转子指令而进入过程后,被调过程根据返回地址,找到存放 实参信息的单元位置,再把各实参信息送入相应形参的形式单 元,然后再执行过程的目标代码
形实结合的方式 ●1.1用调用(Call by reference)控制转入被调过程 后,由被调过程将实参的地址写入相应的形式单元.过程体 中对形式参数的任何引用或赋值,都按对相应形式单元间 接访问的寻址方式为其产生代码。显然,执行过程时,对形 参的赋值将会影响相应实参之值(右值).例如, PROCEDURE SWAP(VAR X,y:INTEGER);VAR t:INTEGER; BEGIN t:=x;x:=y;y:=t;END; 若按引用调用方式,则执行过程语句SWAP(,A[i])相当于执行如下操 作:(仪、y是指针变量) X=&i;y=&A[i]:t=*X;*x=*y;*y=t; 执行上述操作之后,就交换了变量i和A[i门之值
形实结合的方式 • 1.引用调用(Call by reference) 控制转入被调过程 后,由被调过程将实参的地址写入相应的形式单元.过程体 中对形式参数的任何引用或赋值,都按对相应形式单元间 接访问的寻址方式为其产生代码。显然,执行过程时,对形 参的赋值将会影响相应实参之值(右值).例如, PROCEDURE SWAP(VAR x,y:INTEGER);VAR t:INTEGER; BEGIN t:=x; x:=y; y:=t; END; 若按引用调用方式,则执行过程语句SWAP(i,A[i])相当于执行如下操 作:(x、y是指针变量) x=&i; y=&A[i]; t=*x; *x=*y;*y=t; 执行上述操作之后,就交换了变量i和A[i]之值