105年地方特考四等程式設計概要

四、如果我們採取不同參數傳遞的方法,請回答下面程式執行的結果:(每小題4分,共12分)

() pass-by-reference

() pass-by-name

() pass-by-value-result

int y = 1, x = 1;

int fun(int a, int b) {b += a; a = b+x; return a;}

void main( )

{   int x = 2;

y = fun(x, y)+y;

printf(“x = %d, y = %d”, x, y);

}

 

答:

()pass-by-reference

#include <stdio.h>

int y = 1, x = 1;

int fun(int& a, int& b) {

          b += a;

          a = b + x;

          return a;

}

void main() {

          int x = 2;

          y = fun(x, y) + y;

          printf("x = % d, y = % d", x, y);

}

執行結果:

x = 4, y = 7

說明:

int y = 1, x = 1;

y = fun(x, y)+y;

範圍

變數

global

x

1

global

y

1

main/fun

x, a

2

main/fun

y, b

1

int fun(int a, int b) {b += a; a = b+x; return a;}

執行b += a

b = b+a

範圍

變數

global

x

1

global

y

1

main/fun

x, a

4

main/fun

y, b

3

執行a = b+x

範圍

變數

global

x

1

global

y

1

main/fun

x, a

4

main/fun

y, b

3

y = fun(x, y)+y = 4+3 = 7

結果是 x = 4, y = 7

()pass-by-name

int y = 1, x = 1;

y = fun(x, y)+y;

範圍

變數

global

x

1

global

y

1

main/fun

x, a = x

2

main/fun

y, b = y

1

int fun(int a, int b) {b += a; a = b+x; return a;}

執行b += a

b = b+a

範圍

變數

global

x

1

global

y

1

main/fun

x, a = x

2

main/fun

y, y = y+x

3

執行a = b+x

範圍

變數

global

x

1

global

y

1

main/fun

x, x = (y+x)+x

5

main/fun

y, y = y+x

3

副程式中所有型式參數的名稱以實際參數的名稱來替代。

y = fun(x, y)+y = 5+3 = 8

結果是 x = 5, y = 8

()pass-by-value-result

int y = 1, x = 1;

y = fun(x, y)+y;

範圍

變數

global

x

1

global

y

1

main

x

2

main

y

1

fun

a

2

fun

b

1

int fun(int a, int b) {b += a; a = b+x; return a;}

執行b += a

b = b+a

範圍

變數

global

x

1

global

y

1

main

x

2

main

y

1

fun

a

2

fun

b

3

執行a = b+x

範圍

變數

global

x

1

global

y

1

main

x

2

main

y

1

fun

a

4

fun

b

3

當副程式執行完畢時,形式參數的值傳回給實際參數。形式參數的值 a 傳回給實際參數 x,形式參數的值 b 傳回給實際參數 y

範圍

變數

global

x

1

global

y

1

main

x

4

main

y

3

fun

a

4

fun

b

3

y = fun(x, y)+y = 4+1 = 5。第一個 y 是實際參數,第二個 y 是全域變數。

結果是 x = 4, y = 5

arrow
arrow
    文章標籤
    地方特考四等程式設計概要
    全站熱搜

    jacksaleok 發表在 痞客邦 留言(0) 人氣()