C中的typedef和函数指针

刘仁鸿

这是Richard Reese的“理解和使用C指针”中的一个示例。我的问题是第七行应该是“ typedef int(* fptrOperation)......”吗?我尝试了两个,但是它们都工作良好。我搜索了typedef和在线函数指针的用法两天,但仍然没有弄清楚。谢谢你的帮助~~

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


typedef int (fptrOperation)(const char*, const char*);//


char* stringToLower(const char* string) {
    char *tmp = (char*) malloc(strlen(string) + 1);
    char *start = tmp;
    while (*string != 0) {
        *tmp++ = tolower(*string++);
    }
    *tmp = 0;
    return start;
}    

int compare(const char* s1, const char* s2) {
    return strcmp(s1,s2);
}    

int compareIgnoreCase(const char* s1, const char* s2) {
    char* t1 = stringToLower(s1);
    char* t2 = stringToLower(s2);
    int result = strcmp(t1, t2);
    free(t1);
    free(t2);
    return result;
}    



void displayNames(char* names[], int size) {
    for(int i=0; i<size; i++) {
    printf("%s ",names[i]);
    }
    printf("\n");
}    

void sort(char *array[], int size, fptrOperation operation) {
    int swap = 1;
    while(swap) {
        swap = 0;
        for(int i=0; i<size-1; i++) {
            if(operation(array[i],array[i+1]) > 0){
                swap = 1;
                char *tmp = array[i];
                array[i] = array[i+1];
                array[i+1] = tmp;
            }
        }
    }
}    





int main(int argc, char const *argv[])
{
    char* names[] = {"Bob", "Ted", "Carol", "Alice", "alice"};
    sort(names,5,compareIgnoreCase);
    displayNames(names,5);    

    return 0;
}    
undur_gongor

不要紧。

这是因为对于函数参数,函数类型会自动转换为函数指针(ISO / IEC 9899: 2011、6.7.6.3,§8):

如6.3.2.1中所述,将参数声明为“函数返回类型”声明调整为“指向函数返回类型的指针”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C 中的 typedef 和函数指针

来自分类Dev

C函数指针和typedef

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

C中的结构,typedef和指针

来自分类Dev

如何在C#中创建“指向函数指针的typedef”?

来自分类Dev

C中的函数指针和枚举

来自分类Dev

Typedef函数与函数指针

来自分类Dev

Typedef 结构、指针和传递指针到函数

来自分类Dev

C函数中双指针和单指针的区别

来自分类Dev

C:Typedef结构和指针异常

来自分类Dev

C ++指针函数和非指针函数

来自分类Dev

C ++函数指针和成员函数指针

来自分类Dev

Typedef函数指针?

来自分类Dev

BST的C ++中的回调函数和函数指针故障

来自分类Dev

C中带有指针的typedef

来自分类Dev

如何在必须返回类模板的函数指针上使用C ++中的typedef?

来自分类Dev

函数中的指针和列表中的指针

来自分类Dev

C ++中的函数指针

来自分类Dev

typedef函数指针和extern关键字

来自分类Dev

C和C ++中的函数指针转换之间的区别

来自分类Dev

C 中的结构和 typedef

来自分类Dev

C ++-函数指针和类

来自分类Dev

如何使用C ++ 11使用语法typedef函数指针?

来自分类Dev

C:将 typedef 的枚举值作为指针传递给函数

来自分类Dev

C中的解码声明(数组和函数指针的组合)

来自分类Dev

C中的函数指针和内存地址

来自分类Dev

数组和指针在c中作为函数参数的区别

来自分类Dev

指针声明和函数调用中的奇数C语法

来自分类Dev

指向C ++中未定义函数和参数的指针