#include<stdio.h>
int main()
{
int *p,*q;
p=q; //这一步出错:由于前面未对q的值初始化,因而q的值是系统随机赋予的“垃圾值”,虽然符合语法但是会为下一步的程序出错埋下潜在危险,具体危险请看下一步的注释。
printf("%d\n",*p);
return 0;
}
//因为q的内存单元是个垃圾值,本程序不能读写*q的内容。
//因为在本程序中,q的内存单元的控制权限在定义时就分配给了本程序,但是*p的内存单元的控制权限没有分配给本程序,于是程序就无法访问*p的内容,报不出内容所以无法打印出来,卡在这里所以系统就报错。
//如果这是在vs c++中编译,那么系统会直接报错。
//如果这是在dev c++中编译,那么系统不会报错,程序虽然可以运行,但是运行得很不正常,如图所示:①窗口不会打印出什么,只有一行空白;②return出来的数字不是0,而是一串乱数(即图中return value后面的数字是3221225477,而不是0.