我刚才正在学习函数指针,当我正在阅读关于这个主题的K&R章节时,第一件让我感到惊讶的是,"嘿,这有点像一个闭包." 我知道这种假设在某种程度上是根本错误的,在网上搜索后我没有找到任何对这种比较的分析.
那么为什么C风格的函数指针与闭包或lambdas根本不同呢?据我所知,它与函数指针仍然指向已定义(命名)函数的事实有关,这与匿名定义函数的做法相反.
为什么将函数传递给在第二种情况下看起来更强大的函数,它是未命名的,而不是第一种传递的正常日常函数?
请告诉我如何以及为什么我错误地比较这两者.
谢谢.
与本网站上的大多数人相比,我无疑是新手.我想从专业人士那里获得一些建议,以避免在代码中出现愚蠢的错误.
当他们第一次开始错过一些导致大问题的细节时,还有其他人遇到过这个问题吗?是否有任何习惯或行为可以帮助你解决这个问题.
我正在为一项任务实施尾部.我有它正常工作,但我似乎在随机时间免费获得错误.
我无法看到,追踪到一个模式或除了它之外的任何东西是一致的.
例如,如果我将我的程序称为"tail -24 test.in",我将在多次运行时在同一行中得到错误的校验和错误.但是,使用不同的文件,甚至不同的行数打印回来,我会回来没有错误.
关于如何追踪问题的任何想法,我一直试图调试它几个小时无济于事.
这是违规代码:
lines被定义为char**,并且malloc为:
lines = (char**) malloc(nlines * sizeof(char *));
void insert_line(char *s, int len){
  printf("\t\tLine Number: %d Putting a %d line into slot: %d\n",processed,len,slot);
  if(processed > numlines -1){//clean up
    free(*(lines+slot));
    *(lines + slot) = NULL;
  }
  *(lines + slot) = (char *) malloc(len * sizeof(char));
  if(*(lines + slot) == NULL) exit(EXIT_FAILURE);
  strcpy(*(lines+slot),s);
  slot = ++processed % numlines;
}