在程序中使用函数指针

时间:2014-02-21 14:25:26

标签: c function-pointers

我在这里使用了函数指针,但是无法理解为什么它不起作用,这是我的代码片段。当我运行此代码时,我得到的不是输出,我期望在命令行中给出-r时打印降序和升序,如果没有给出命令行输入,则应该打印升序。

我的代码出了什么问题?

#include <stdio.h>
#include <stdlib.h>

void decending_sort()   {
   printf ("Decending order \n");
}

void ascending_sort()   {
  printf ("Ascending order \n");
}

int main( int argc, char **argv)  {

int i;
void (*sort)();

while (*++argv) {
    if ((strcmp ( *argv, "-r" )) == 0)
        sort = decending_sort;
}
sort = ascending_sort;
}

1 个答案:

答案 0 :(得分:5)

您将sort定义为函数变量,为其赋值,但从不调用它,因此{id}}和decending_sort()都不会被执行。

要调用它,请将此最后一行添加到`main()

ascending_sort()

另外:没有任何参数的函数应声明如下:

  [...]

  sort();
}

要么是其类型的变量

void decending_sort(void);