【问题标题】:Assign pointer value [duplicate]分配指针值[重复]
【发布时间】:2015-01-18 21:19:16
【问题描述】:

为什么会在代码中出现异常?

char* first = "first";
char* second = "second";
*first = *second;

不应该只是赋值吗? 错误信息说:访问冲突

【问题讨论】:

  • firstsecond 指向你不能写入的内存。不幸的是,在初始化时会执行到非常量指针类型的转换。请为将来提供准确的错误消息。
  • 这无关,我想说@ChristianSarofeen。
  • @UlrichEckhardt 在发布的代码中没有从const 到非const 的转换。 "first",虽然不能写入,但其类型为 char [6],并在分配时衰减为 char *
  • 对任何投票结束作为 C++ 问题的副本的人感到羞耻。

标签: c pointers


【解决方案1】:

不,因为它们是字符串文字并且是只读的

char *first = "first";
char *second = "second";

您可以尝试使用数组。

char first[] = "first";
char second[] = "second";

为了防止这种错误,你可以这样做

const char *first = "first";
const char *second = "second";

在声明字符串字面量时,它并不能完全避免问题,因为您仍然可以丢弃const,但您应该有意识地这样做。

【讨论】:

  • 从技术上讲,字符串文字不是不可修改的。只是给他们写信构成未定义的行为。
猜你喜欢
  • 2021-04-03
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2021-01-21
相关资源
最近更新 更多