为什么执行此基本程序会出现错误?

时间:2019-02-11 23:29:22

标签: c pointers char

我不太了解,为什么执行该程序会出现错误?

  int main()
  {
        char *b;
        *b='2';
        printf("%c",*b);
        return 0;
  }

2 个答案:

答案 0 :(得分:2)

按现状,b未初始化,因此可以指向任意位置。当您说*b =...时,您试图写入某个未指定的位置,该位置(取决于该位置是什么)通常会导致错误(例如段错误)。也许您是想将b声明为char而不是指向它的指针?

答案 1 :(得分:1)

这似乎是直接取自作业或教科书的。声明char指针b时,默认情况下不给它一个内存地址(它指向的地方),它只包含事先在内存位置中的任何内容。这意味着,如果您尝试使用值(* b ='2'或printf),它将尝试读取内存中剩余的随机信息作为地址,并在该地址处查找char。这将导致分段错误,或者如果您不走运,它将从内存中获取垃圾并将其用作char值。

解决方案是创建一个char变量(char a)并将指针设置为a的位置(b =&a)。

希望这对您有所帮助,并祝您学习顺利。