首页 > 解决方案 > 我看不懂这段代码?这是正常的还是我还没准备好?

问题描述

这些是我无法理解的 C 教程书中的一些示例代码行。

我已经学习了运算符、程序结构、变量、I/O、决策和循环、数组、字符串...、函数,现在我在第 6 章学习指针。

void check(char *a,char *b, int (*cmp)(const char *,char *)); // this one
//int cmp(char * , char *);
int main()
{
    char s1[80],s2[80];
    int (*p)(const char *,const char *); //  and this one



if(!(cmp)(a,b)) //and this

(此代码不完整)

这是正常的吗?我应该使用不同的来源吗?

标签: coperators

解决方案


void check(char *a,char *b, int (*cmp)(const char *,char *)); // this one

这是一个接受 3 个参数的函数,

  1. 一个字符指针
  2. 另一个字符指针
  3. 一个函数指针。有问题的函数返回一个 int 并采用 2 个字符指针作为参数。

下一行,

int (*p)(const char *,const char *);

这是一个函数指针p。该函数返回一个 int 并将 2 个字符指针作为参数。

if(!(cmp)(a,b))

cmp在这里的范围内没有定义,但我假设这条线在函数内部check。在这种情况下,您正在cmp使用参数调用函数,a并且这些参数b可能是字符指针。


推荐阅读