首页 > 代码库 > c之指向常字符串的指针做加法

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也可以做减法,但是减法会产生内存溢出,慎用。

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