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

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

5个回答

abcdefg是const 不能直接加一

weixin_33193501
Dnetos 只是吧字符串的地址加1在赋值给指针变量
大约 4 年之前 回复

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

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

sinat_19650093
疯狂的小羊 回复Dnetos: 我用Codeblock ,也是gcc编译器。不会报错。。。你试一试在window7上试一试,如果不会出错,那可能就是环境问题
大约 4 年之前 回复
weixin_33193501
Dnetos 我也是怎么想的可在我机器上确实报错了,我的是乌班图,用gcc编译器的,难道在你机器上没报错吗?
大约 4 年之前 回复

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问