Реферат: Объективное программирование
return(x); г===== b <--------- x ¦
} ¦ --> <----¬ +-¦-+
¦ ¦ L---- ¦ ¦return(x)
¦ ¦ г======+=====void main() a=*..¦ ¦ ¦ ¦ +---+ стек
{ ¦ ¦ --¦-¬ L---- x ¦
dat a,b,*p; ¦ ¦ ¦ =========> ¦
a = *Inc(Inc(&b)); ¦ ¦ L---- +-¦-+
p = Inc(&b); ¦ ¦ ----¬ ¦return(x)
a = *p; ¦ L-- <===========} ¦ L--- ¦ ----¬
L====> a ¦
L---
Пример 3. Параметры - неявные ссылки
---------------------------------------------------------dat& Inc(dat& x) x.day++ неявная ссылка dat* px
{ x.day++
x.day++; ----¬ стек +---+
return(x); г===== b <--------- px¦
} ¦ --> <----¬ +-¦-+
¦ ¦ L---- ¦ ¦return(px)
¦ ¦ г======+=====void main() a=*..¦ ¦ ¦ ¦ +---+ стек
{ ¦ ¦ --¦-¬ L---- px¦
dat a,b,*p; ¦ ¦ ¦ =========> ¦
a = Inc(Inc(b)); ¦ ¦ L---- +-¦-+
p = &Inc(b); ¦ ¦ ----¬ ¦return(px)
a = *p; ¦ L-- <===========} ¦ L--- ¦ ----¬
L====> a ¦
L---
Сравнение этих примеров показывает следующее:
- при работе с формальным параметром - неявной ссылкой используется имя формального параметра в качестве идентификатора переменной, которая заменяется транслятором на косвенное обращение по неявной ссылке;
- при возвращении результата используется имя переменной,которая заменяется транслятором неявной ссылкой на нее;