当前位置: 代码迷 >> C语言 >> 对如下指针数组的操作为什么一执行就错误?
  详细解决方案

对如下指针数组的操作为什么一执行就错误?

热度:147   发布时间:2008-05-09 13:28:04.0
我明白了void main()
{
char *p1;
scanf("%s",&p1);
printf("%s",&p1);
}是能够正确执行的,scanf只是得到后面参数的地址,然后将输入的字符串写到对应的地址上,而不管你有没有在这个地址上定义一个变量,这里的&p1就是指针本身的地址,而printf也只是将指定地址的内容取出显示而已
----------------解决方案--------------------------------------------------------
这里虽然是定义了指针,但是实际上只是一个址的操作而已,并没有用到指针的功能 
----------------解决方案--------------------------------------------------------
而void main()
{
char *p1;
scanf("%s",p1);
printf("%s",p1);
}应该避免这样操作,因为指针p1并没有指向一个分配的地址,它只有一个随机值,当将输入的字符串写到这个p1的地址上时这样做是很危险的,如果这个地址原来没有数据,则不会发生任何错误,如果这个地址原来有重要的数据则可能导致系统的崩溃。哈哈
----------------解决方案--------------------------------------------------------
  相关解决方案