【问题标题】:unexpected output in c (pointers)c中的意外输出(指针)
【发布时间】:2013-01-08 14:28:37
【问题描述】:

谁能指出其中的错误

#include <stdio.h>
void modify (char*s,int x,int y)
{
    s[x]=s[y];
}
main()
{
   char* s = "random";
   modify(s,1,2);
}

程序突然结束。我知道这可能是一个非常简单的问题,但我是 c 新手。 谢谢!

【问题讨论】:

  • 如果我输入 'printf("\n%c",s[x]);'该程序运行良好
  • 期待什么?程序结束,当它完成代码时。您发布的内容是一个什么都不做的程序。

标签: c output


【解决方案1】:

这是因为它在分配modify 的过程中崩溃。原因是指针指向一个常量字符串,不能修改。

如果要修改字符串,可以改为数组声明:

char s[] = "random";

【讨论】:

    【解决方案2】:

    就是这样。我曾经遇到过同样的问题。你应该替换这一行:

     char *s = "random";
    

    用下面的一个:

    char s[] = "random";
    

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多