美文网首页
字符串反转

字符串反转

作者: 笑破天 | 来源:发表于2022-07-12 23:55 被阅读0次

    char类型只能存储单个字符,在C中要存储多个字符组成的字符串得用char*char[]。区别是char*保存的是字符串常量,内容不能更改,所以得用char[]

    - (void)strReverseTest{
        char str[] = "32415";
        int len = strlen(str);
        for (int i=0; i<(len+1)/2; i++) {
            char temp = str[i];
            str[i] = str[len-1-i];
            str[len-1-i] = temp;
        }
        NSLog(@"%s",str); // C中打印数组得for循环,不方便
    }
    
    - (void)strReverseTest2{
        char str[] = "32415";
        int len = strlen(str);
        char *begin = str;
        char *end = str+len-1;
        while (begin<end) {
            char temp = *begin;
            *begin = *end;
            *end = temp;
            begin++;
            end--;
        }
        NSLog(@"%s",str);
    }
    

    指针和字符数组

    C中指针指向数组的时候表示指向数组中第一个元素,begin的值为第一个元素的地址。如下图begin==&str。


    image.png

    x 0x7ffee140d93a 读取内存地址中的值,并打印。
    p *begin 把begin的值作为内存地址,打印该地址中的值。

    两者都是打印内存地址的值,没有区别,x命令打印出的第一位33即为字符3的ASCII码51的16进制。

    注意:直接打印p *(0x7ffee140d93a)会格式报错error: <user expression 5>:1:1: indirection requires pointer operand ('long' invalid)。需要改为p *((char*)0x7ffee140d93a)

    相关文章

      网友评论

          本文标题:字符串反转

          本文链接:https://www.haomeiwen.com/subject/surabrtx.html