c - 我看不懂这段代码?这是正常的还是我还没准备好?
问题描述
这些是我无法理解的 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
(此代码不完整)
这是正常的吗?我应该使用不同的来源吗?
解决方案
void check(char *a,char *b, int (*cmp)(const char *,char *)); // this one
这是一个接受 3 个参数的函数,
- 一个字符指针
- 另一个字符指针
- 一个函数指针。有问题的函数返回一个 int 并采用 2 个字符指针作为参数。
下一行,
int (*p)(const char *,const char *);
这是一个函数指针p
。该函数返回一个 int 并将 2 个字符指针作为参数。
if(!(cmp)(a,b))
cmp
在这里的范围内没有定义,但我假设这条线在函数内部check
。在这种情况下,您正在cmp
使用参数调用函数,a
并且这些参数b
可能是字符指针。
推荐阅读
- go - 如何在 GoLang 中的 CoAP 中为服务器编写服务端点 PUT 请求方法?
- cypress - 使用 cypress 运行测试时出现错误“TypeError: Cannot set property 'width' of null..”并且测试失败
- apache-nifi - 到 Kafka 的 Syslog:NIFI 中最高效的工作流程?
- angular - 以角度将动态值绑定到formcontrolname
- java - 如何修复 org.hibernate.TransientPropertyValueException
- python - 将 settings.py 移出 django 项目,如何设置以使其正常工作?
- c# - process.StandardError 不会重定向输出,而 process.StandardOutput 会
- javascript - 从 AJAX 调用 Web 服务时,没有为此对象定义无参数构造函数
- java - Java spring 解析解析带有额外字段的 JSON
- templates - 在 App.vue 中显示组件的模板