【发布时间】:2013-09-22 13:25:13
【问题描述】:
我试图理解为什么会这样:
char myst1r[] = "hello\n";
memmove(myst1r , myst1r + 1 , 1 );//results in "eello"
而这个:
char *mystr = "hello\n";
memmove(mystr , mystr + 1 , 1 );
导致“访问冲突写入位置”错误。
myst1r 和 mystr 不都指向 char 缓冲区的第一个成员吗?我在这里想念什么?
【问题讨论】:
-
请解释你为什么投反对票?这是完全有效的 SO 问题。
-
@MichaelV 很多次都是重复的,它被过度询问了。 Downvoters 大概有一种感觉,即您在询问之前没有进行任何研究。此外,任何对数组和指针(尤其是字符串常量)之间的区别了解最少的人都不必问这个问题。
-
它是与 char 数组一起询问的,这确实很清楚......在我的情况下,我试图处理 char 指针。
-
“请解释你为什么投反对票”,把你的鼠标光标放在向下箭头上,这可能解释了它
-
请告诉我类似的问题?上面提到的那个不涉及 memmove。但是无论如何......我已经从答案中理解了我需要什么。你们中的一些人太强硬了。即使如果在其他情况下间接回答了这个问题并不意味着这样的问题不能成立。C/C++ 菜鸟也是人。