純參考喔^^加油
[root@walter yahoo-code]# cat test0616.c
#include <stdio.h>
#include <stdlib.h>
/*****************************************************************************/
#define ShareFun \
for (i = 0;i < 3; i++) { \
arr3[i] = Fun(arr1[i], arr2[i]); \
}
/*****************************************************************************/
int (*Fun)(int num1, int num2);
int AddFun(int num1, int num2)
{ int num3 = num1 + num2; return num3; }
int SubFun(int num1, int num2)
{ int num3 = num1 - num2; return num3; }
int TimeFun(int num1, int num2)
{ int num3 = num1 * num2; return num3; }
int PriArr(int *arr, int length)
{
int i;
for (i = 0;i < length; i++) {
printf("arr3[%d] = %2d ", i, arr[i]);
}
printf("\n=======================================\n");
}
int main ()
{
int i;
int arr1[3] = {1, 2, 3};
int arr2[3] = {3, 2, 1};
int arr3[3] = {0, 0, 0};
/* Call Add Fun */
printf("Call Add Fun:\n");
Fun = AddFun;
ShareFun
PriArr(arr3, sizeof(arr3)/sizeof(arr3[0]));
/* Call Sub Fun */
printf("Call Sub Fun:\n");
Fun = SubFun;
ShareFun
PriArr(arr3, sizeof(arr3)/sizeof(arr3[0]));
/* Call Time Fun */
printf("Call Time Fun:\n");
Fun = TimeFun;
ShareFun
PriArr(arr3, sizeof(arr3)/sizeof(arr3[0]));
return 0;
}
執行結果如下:
[root@walter yahoo-code]# gcc test0616.c
[root@walter yahoo-code]# ./a.out
Call Add Fun:
arr3[0] = 4 arr3[1] = 4 arr3[2] = 4
=======================================
Call Sub Fun:
arr3[0] = -2 arr3[1] = 0 arr3[2] = 2
=======================================
Call Time Fun:
arr3[0] = 3 arr3[1] = 4 arr3[2] = 3
=======================================
======================================================
#! /usr/bin/perl -w
my @arr1 = (1, 2, 3);
my @arr2 = (3, 2, 1);
my @arr3 = (0, 0, 0);
my $refFun;
sub Add() {
$arg = \@_;
my $z = $arg->[2];
$arr3[$z] = $arg->[0] + $arg->[1];
}
sub Sub() {
$arg = \@_;
my $z = $arg->[2];
$arr3[$z] = $arg->[0] - $arg->[1];
}
sub Time() {
$arg = \@_;
my $z = $arg->[2];
$arr3[$z] = $arg->[0] * $arg->[1];
}
sub shareFun() {
$i = 0;
for ($j = 0; $j <= $#arr1; $j++) {
&$refFun($arr1[$j], $arr2[$j], $j);
}
while ($i <= $#arr3) {
print "$arr3[$i++] ";
}
print "\n";
}
print "Before call any Fun:\n";
print "Arr1 = " . qq(@arr1) . "\n";
print "Arr2 = " . qq(@arr2) . "\n";
print "Arr3 = " . qq(@arr3) . "\n";
print "Call Add Fun:\n";
$refFun = \&Add;
&shareFun();
print "Call Sub Fun:\n";
$refFun = \⋐
&shareFun();
print "Call Time Fun:\n";
$refFun = \&Time;
&shareFun();
============================
執行結果如下:
Before call any Fun:
Arr1 = 1 2 3
Arr2 = 3 2 1
Arr3 = 0 0 0
Call Add Fun:
4 4 4
Call Sub Fun:
-2 0 2
Call Time Fun:
3 4 3