A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lipeiaiwo 中级黑马   /  2014-7-22 18:34  /  985 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个没看太懂,谁能给解释下这句?

     // 2.定义一个指向变量right指向字符串的末字符
    char *right = str + strlen(str) - 1;   

这个具体是怎么变化的?我现在看的就是str+5-1 这是什么组合?


/*
编写一个函数,判断某个字符串是否为回文。
回文就是从左边开始读 和 从右边开始读 都是一样的,比如"abcba"
*/

#include <string.h>
#include <stdio.h>
int isHuiwen(char *str);

int main()
{
    printf("%d\n", isHuiwen("abcba"));
    return 0;
}

/*
返回1代表是回文
返回0代表不是回文
*/
int isHuiwen(char *str)
{
    // 1.定义一个指向变量left指向字符串的首字符
    char *left = str;
    // 2.定义一个指向变量right指向字符串的末字符
    char *right = str + strlen(str) - 1;
   
    while (left < right)
    {
        // 如果左边和右边的字符不一样
        if (*left++ != *right--)
        {
            return 0;
        }
    }
   
    return 1;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马