【问题标题】:char pointer, Access violation writing locationchar 指针,访问冲突写入位置
【发布时间】:2013-09-07 07:56:25
【问题描述】:
void cpy(char *s, char *t)  {         
while((*s = *t) != '\0') {
    s++;
    t++;
  }
}
void main() {
char *x;
char *y;
x="abc";
y="zzz";
cpy(x,y);

}

这个函数有什么问题? *s=*t 部分错了吗?总是说“访问冲突写入位置”...

【问题讨论】:

标签: pointers char


【解决方案1】:

您在配额中指定的字符串是常量字符串并存储在只读内存中。所以之后

x = "abc"

x 指向只读内存区域。当您尝试使用 cpy 在那里写入时,您会遇到异常。

【讨论】:

  • 这是否意味着我们不能通过指针更改字符串的任何单个字符?
  • 如果指针指向只读数据,则不能。您可以使用 strdup("abc") 进行 r/w 复制。并且不要忘记在使用后免费。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2015-08-15
  • 2020-09-04
  • 2012-12-05
相关资源
最近更新 更多