下面这个代码段说明了一个极为常见的错误:
int *a;
...
*a = 12 ;
这个声明创建一个名叫a的指针常量,后面那条赋值把12存储在a所指向的内存位置。
警告:
但是究竟a指向哪里呢?我们声明了这个变量,但从未对它进行初始化,所以我们没有办法预测12这个值将存储在什么地方。从这一点看,指针变量和其它变量并无区别。如果变量是静态的,它还被初始化为0;但如果变量是自动的,它根本不会被初始化。无论是哪种情况,声明一个指向整型的指针都不会“创建”用于存储整型的内存空间。
下面这个代码段说明了一个极为常见的错误:
int *a;
...
*a = 12 ;
这个声明创建一个名叫a的指针常量,后面那条赋值把12存储在a所指向的内存位置。
警告:
但是究竟a指向哪里呢?我们声明了这个变量,但从未对它进行初始化,所以我们没有办法预测12这个值将存储在什么地方。从这一点看,指针变量和其它变量并无区别。如果变量是静态的,它还被初始化为0;但如果变量是自动的,它根本不会被初始化。无论是哪种情况,声明一个指向整型的指针都不会“创建”用于存储整型的内存空间。