c语言指针问题 char *p="abcdefg"+1; 为什么会报错,const char*无法转换为char*

char p="abcdefg"+1;
为什么会报错,const char
无法转换为char*

abcdefg是const 不能直接加一

我想我知道了,字符串是const的对象所以指向他的指针也必须用const修饰,但这样又有个问题了char* p="ddd";为什么就可以呢?"ddd"不应该是一个const的的对象吗但指针并没有被const修饰啊

char *p="abcdefg"+1 不会报错啊,倒是输出printf("%s",p)的时候,只会输出bcdefg。后面的加1操作相当于把p指针后移一位,你试一下看看

const是指常量的,怎么能用在指针上???const修饰后不是不能变了吗,指针还有什么用?

可以这样const char* p=&i;
i是什么p就是什么