我不太了解,为什么执行该程序会出现错误?
int main()
{
char *b;
*b='2';
printf("%c",*b);
return 0;
}
答案 0 :(得分:2)
按现状,b
未初始化,因此可以指向任意位置。当您说*b =...
时,您试图写入某个未指定的位置,该位置(取决于该位置是什么)通常会导致错误(例如段错误)。也许您是想将b
声明为char
而不是指向它的指针?
答案 1 :(得分:1)
这似乎是直接取自作业或教科书的。声明char指针b时,默认情况下不给它一个内存地址(它指向的地方),它只包含事先在内存位置中的任何内容。这意味着,如果您尝试使用值(* b ='2'或printf),它将尝试读取内存中剩余的随机信息作为地址,并在该地址处查找char。这将导致分段错误,或者如果您不走运,它将从内存中获取垃圾并将其用作char值。
解决方案是创建一个char变量(char a)并将指针设置为a的位置(b =&a)。
希望这对您有所帮助,并祝您学习顺利。