我在这里使用了函数指针,但是无法理解为什么它不起作用,这是我的代码片段。当我运行此代码时,我得到的不是输出,我期望在命令行中给出-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;
}
答案 0 :(得分:5)
您将sort
定义为函数变量,为其赋值,但从不调用它,因此{id}}和decending_sort()
都不会被执行。
要调用它,请将此最后一行添加到`main()
ascending_sort()
另外:没有任何参数的函数应声明如下:
[...]
sort();
}
要么是其类型的变量
void decending_sort(void);