函数数组

#include <unistd.h>
typedef int (FUN) (void);
typedef FUN_PTR (FUN*) ;
int print1(void)
{
    printf("1111111\n");
    sleep(1);
}

int print2(void)
{
    printf("2222222\n");
    sleep(1);
}

int print3(void)
{
    printf("333333\n");
    sleep(1);
}

int print4(void)
{
    printf("444444\n");
    sleep(1);
}

int print5(void)
{
    printf("555555\n");
    sleep(1);
}

FUN* functable[]={
    print1 ,
    print2,
    print3,
    print4,
    0
};

int main()
{
    FUN **fnc_ptr  ;

    int i ;
    for(fnc_ptr = functable ; *fnc_ptr ; ++fnc_ptr){
        (*fnc_ptr)();
    }
    fnc_ptr = functable;
    for(i=0 ; i<5;i++){
        (*(fnc_ptr+i))();
    }
    fnc_ptr = functable;
    for(i=0 ; i<5;i++){//Segmentation fault
         (fnc_ptr[i])();
    }
}
/*
1111111
2222222
333333
444444
1111111
2222222
333333
444444
Segmentation fault
*/
改:
int main()
{
    FUN **fnc_ptr  ;

    int i ;
    for(fnc_ptr = functable ; *fnc_ptr ; ++fnc_ptr){
        (*fnc_ptr)();
    }
    #if 1
    fnc_ptr = functable;
    for(i=0 ; i< 4;i++){
        (*(fnc_ptr+i))();
    }
    #endif

    #if 1
    fnc_ptr = functable;
    for(i=0 ; i< 4;i++){
         (fnc_ptr[i])();
    }
    #endif

}
/*
1111111
2222222
333333
444444
1111111
2222222
333333
444444
1111111
2222222
333333
444444
*/
时间: 2024-08-27 01:09:09

函数数组的相关文章

JAVA 蹒跚自学之 第六日 函数 数组

定义函数的格式    修饰符  返回值类型  函数名  (参数类型  形式参数1,参数类型  形式参数2,----------.) (代码块      return }   如何定义一个函数  1  明确要定义的函数的返回值类型   2   明确 要定义的函数的参数列表 3  明确要定义函数的功能,不该函数完成的功能不要加到函数里面,切记,切记.   例如 1 定义一个函数 完成两个数的求和            public  static  int  getsum(int a ,int b)

java中的函数,数组

函数 程序中独立的过程 函数的语法: 函数的定义 声明 static 返回值类型 函数名 (参数表) 形式参数:形参 在函数内部有效的局部变量 实现 { 语句 } 函数的调用 函数名(参数); 实际参数:实参 为形参赋值 接收返回值 函数的作用: 1. 减少冗余代码,提高程序的可维护性 2. 可重用性 函数库 3. 加强代码的结构化 提高可读性 利于分工 非结构化编程(语句) ---> 结构化编程(函数) ---> 面向对象(类) 数组 一次性定义多个同类型的变量 数组空间在内存是连续的 定义

JAVA-day02- 循环函数数组

class Demo1 { public static void main(String[] args) { //求1--10的累加和 int sum =0; for(int i=1;i<=10;i++) { sum = sum+i; } System.out.println("sum="+sum); /* sum = sum+1; sum = sum +2; sum = sum+3; */ } } class Demo2 { public static void main(St

每天php函数 - 数组最后一个元素取出

复制代码代码如下: $array=array(1,2,3,4,5);    echo $array[count($array)-1];//计算数组长度,然后获取数组最后一个元素,如果数组中最后一个元素含有非数字键名,结果可能跟预期不符合    //适用于键名为数字的数组    echo '<br>';    echo end($array);//将数组的内部指针指向最后一个单元,适用于所有数组 总体来说,php的内置函数end还是最好的方法的了.大家可以测试下. PHP取值很容易,可以使用循环

数组&amp;&amp;函数数组

数组:一次性定义多个同类型的变量,数组在 内存中存储空间必须是连续的(查询比较快)定义数组: int a[]; int[] a;分配空间: a=new int[5]; 自动为数组元素赋以默认值 a[0]=1; a[1]=2; 默认值 数值类型 0 boolean false 对象类型 null int[] a=new int[]{1,2,3}; ======错误写法:int[] a=new int[3]{1,2,3};int[] a={1,2,3}; 访问数组元素:数组名[下标] 下标是从0开始

c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] 数组的引用 a是一个数组的引用 Int& a[10] 引用函数 非法 数组的引用:1.在程序体中 int a[10]; Int (&p)[10]=a;//引用数组 2.作为参数 #include <iostream> #include <string> using n

php函数---数组函数array_map()

/*函数array_map()函数:多数组回调函数---将回调函数作用到给定数组的单元上   * 1.语法:array array_map ( callback callback, array arr1 [, array ...] )   * 2.描述:返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的   * 单元.callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致.   * 3.注意事项:   *   3.1.多数组回

php常用函数-数组

学习php的过程中,整理的一些常用的函数,这是数组函数. <?php //array():生成一个数组 $a = array("dog","cat","horse"); print_r($a); //Array ( [0] => dog [1] => cat [2] => horse ) //array_combine():生成一个数组,用一个数组的值作为键名,另一个数组的值作为值 $a1 = array("a&

PHP 数组函数 数组中的差集和交集

array_diff( $arr , $arr2[--] )  返回一个数组,该数组包括了所有在$arr1 但是不在任何其他参数数组中的值,键名不变 array_diff_uassoc( $arr ,$arr2 ,[--] , 'cmp_function') 用回调函数做索引比较数组中的差集 array_diff_assoc( $arr , $arr2[--] ) 返回一个数组,$arr 与其他数组的差集 同时比较键名  索引不变 array_udiff( $arr , $arr2 [--] ,

PHP数组函数 数组中的杂项

array_change_key_case( $arr ,CASE_LOWER || CASE_UPPER) 返回键名全为大写或者是小写的数组 array_rand($arr , num) 从数组中随机取出一个或多个单元 shuffle(&$arr)   将数组打乱 array_chunk($arr , $size , bool) 把$arr 拆分,每个数组为$size 个元素 , bool 是否保持原来索引 array_combine( $arr , $arr2) 合并两个数组  $arr 的