Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指针变量声明的解释_C_Pointers_Declaration_Function Declaration - Fatal编程技术网

C 指针变量声明的解释

C 指针变量声明的解释,c,pointers,declaration,function-declaration,C,Pointers,Declaration,Function Declaration,什么是int*(cmp)(char*,char*)平均值 char*ptr1和char*ptr2 这个 是具有返回类型int*和两个类型为char*的参数的函数的声明 可以将声明符括在括号中。所以上面的函数声明也可以像这样重写 int * ( (cmp)(char*, char*) ); 这两个声明都相当于 int * cmp(char*, char*); 指向此类函数的指针声明如下所示 int * ( *p_cmp )(char*, char*) = cmp; 这些声明之间没有区别 ch

什么是
int*(cmp)(char*,char*)平均值

  • char*ptr1
    char*ptr2

  • 这个

    是具有返回类型
    int*
    和两个类型为
    char*
    的参数的函数的声明

    可以将声明符括在括号中。所以上面的函数声明也可以像这样重写

    int * ( (cmp)(char*, char*) );
    
    这两个声明都相当于

    int * cmp(char*, char*);
    
    指向此类函数的指针声明如下所示

    int * ( *p_cmp )(char*, char*) = cmp;
    
    这些声明之间没有区别

    char* ptr1;
    
    char *ptr1;
    
    char * ptr1;
    
    这个

    是具有返回类型
    int*
    和两个类型为
    char*
    的参数的函数的声明

    可以将声明符括在括号中。所以上面的函数声明也可以像这样重写

    int * ( (cmp)(char*, char*) );
    
    这两个声明都相当于

    int * cmp(char*, char*);
    
    指向此类函数的指针声明如下所示

    int * ( *p_cmp )(char*, char*) = cmp;
    
    这些声明之间没有区别

    char* ptr1;
    
    char *ptr1;
    
    char * ptr1;
    

    1) 2)只是写作风格<代码>整数*(cmp)(字符*,字符*)只是
    int*cmp(char*,char*)
    cmp
    是一个函数,它接受两个参数,并且都是
    char*
    类型,并返回指向
    int
    的指针。2.没有区别。这是选择的问题。在第二种情况下,我更喜欢
    char*ptr2因为在
    char*ptr2,ptr3
    ptr3
    不是指针,它是
    char ptr3
    由于它被称为
    cmp
    (比较?),我倾向于认为签名实际上是
    int(*cmp)(char*,char*)
    ,即指向函数的指针,该函数返回一个
    int
    ,作为
    qsort
    样式比较函数(as)的参数。如果您想了解如何编写这样一个函数,可能会很有用。@WeatherVane不能在一行上编写多个声明-这样做是众所周知的安全隐患。不仅仅是指针;我也见过像
    inta,b,c=0c
    .1)2)只是编写样式。1<代码>整数*(cmp)(字符*,字符*)只是
    int*cmp(char*,char*)
    cmp
    是一个函数,它接受两个参数,并且都是
    char*
    类型,并返回指向
    int
    的指针。2.没有区别。这是选择的问题。在第二种情况下,我更喜欢
    char*ptr2因为在
    char*ptr2,ptr3
    ptr3
    不是指针,它是
    char ptr3
    由于它被称为
    cmp
    (比较?),我倾向于认为签名实际上是
    int(*cmp)(char*,char*)
    ,即指向函数的指针,该函数返回一个
    int
    ,作为
    qsort
    样式比较函数(as)的参数。如果您想了解如何编写这样一个函数,可能会很有用。@WeatherVane不能在一行上编写多个声明-这样做是众所周知的安全隐患。不仅仅是指针;我也见过像
    inta,b,c=0c