c之指向常字符串的指针做加法

先看一小段代码

#include<string.h>
int main()
{
    size_t len = 0;
    const char* id = "abcdefghijklmn";
    len = strlen(id);
    if (len > 3)
    {
        id +=  len - 3 ;
    }
    return 0;
}

乍一看,觉得这段代码一定是有问题,id是一个指向常量字符串的指针,还能做加减?

但是,指针当然能做加减呀。id不是一个常指针,当然能够改变,就算id是一个常指针,也可以改变,但是这里就不讨论这个问题了。

id += len -3; //id向后移动len-3个char类型的长度,即len-3个字节

因此,id = "lmn"

这里id也可以做减法,但是减法会产生内存溢出,慎用。

posted @ 2014-09-15 17:54  log_a  阅读(463)  评论(0编辑  收藏  举报