字符串反转

2022-07-12  本文已影响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)

上一篇下一篇

猜你喜欢

热点阅读