永发信息网

请问这个字符比较的原理是什么呀

答案:3  悬赏:20  手机版
解决时间 2021-04-01 00:29
  • 提问者网友:暗中人
  • 2021-03-31 13:43
请问这个字符比较的原理是什么呀
最佳答案
  • 五星知识达人网友:行路难
  • 2021-03-31 14:00
*a和*b都表示对a或比指针指向的地址取内容,也就取到了指向的一个字符,单个字符对应的有ASCII码,C的ASCCII码表中字符小a对应97,大A对应65,,26个字母顺序字符对应的ASCII码依次加1,所以比如*a取到的是字符‘b’(ASCCII码为98),*b取到的是字符‘a’(ASCCII码为97),那么*a-*b=98-97=1>0,所以判断*a>*b,如果结果等于0,*a==*b。这个比较a和b字符串中的一个字符,但是本函数是用来比较a和b指针指向的两个字符串大小,不是字符,那么字符串大小比较的理论是:依次按位比较两个字符串中的每一个字符,如果都相等,这字符串相等,如果一个字符串中相同位上有一个字符大于另一个字符串的相同位上的字符,则字符串大于另一个字符串。也就明白了。追问谢谢啦,不过char* a=(char*)a这个是什么意思呢?追答这个表达式的意思是:把函数传进来的指针类型形参 "_a"赋值给自己定义的字符指针变量 “a”,由于函数参数传进来时指针“_a”是“void *”类型,也就是可以指向任意类型的内存块。所以要进行强制类型转换,(char *)就是用来强制类型转换的。
所以这个表达式完整意思是:把形参“_a”强制类型转换成指向字符的指针后,赋值给指针“a”。
全部回答
  • 1楼网友:轻雾山林
  • 2021-03-31 16:33
*a-*b=0,则return 0,表示俩字符一样; *a-*b>0,则返回值大于0,表示a>b;最后一种情况表示a
  • 2楼网友:执傲
  • 2021-03-31 14:58
输入形参为指针,指向存放实际需要比较的字符的地址。函数中对该指针变量进行比较,如果相减为0则表示为相同字符,不为0则为不同,同时返回。你要明白字符在系统中以ascii码形式保存
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯