为了账号安全,请及时绑定邮箱和手机立即绑定

如下的话就表示两个字符串相等了是么?

如下的话就表示两个字符串相等了是么?

C
郎朗坤 2022-11-18 17:13:13
# include <stdio.h># include <string.h>void check(char *a, char *b, int(*cmp)(const char *, const char *));void main(){char s1[80], s2[80];int(*p)(const char *, const char *); /* 函数指针 */p = strcmp; /* 将函数strcmp的地址赋给函数指针p */printf("输入两个字符串:\n");gets(s1); /* 输入字符串1 */gets(s2); /* 输入字符串2 */check(s1, s2, p); /* 通过指针变量p传递函数strcmp的地址 */}void check(char *a, char *b, int(*cmp)(const char *, const char *)){printf("测试是否相等\n");if(!(*cmp)(a, b))printf("结果:相等\n");elseprintf("结果:不相等\n");}就想问:*cmp不是指向strcmp函数么?那么if(!(*cmp)(a, b))应该表示if((*cmp)(a, b)==0)是么?
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

if(!(*cmp)(a, b)) 就是 if(!strcmp(s1, s2)) 即 strcmp(s1, s2)结果不为0,即s1不等于s2

查看完整回答
反对 回复 2022-11-22
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

if(!(*cmp)(a, b))与if((*cmp)(a, b)==0)是不一样的。

查看完整回答
反对 回复 2022-11-22
  • 2 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信