指针被声明为全局或静态,就会在程序启动时被初始化为NULL。下面是全局和静态指针的例子: int *globalpi; void foo() { static int *staticpi; ... } int main() { ... } 下图说明了内存布局,栈帧被推入栈中,堆用来动态分配内存,堆上面的区域用来存放全局/静态变量。这只是原理图,静态和全局变量一般放在与栈和堆所处的数据段不同的数据段中。