返回首页   进站必读

7.2 指针的初始化


7.2 指针的初始化

7.2.1 取地址运算符&

&i表示取变量i的地址,int *pi = &i;表示定义一个指向int型的指针变量pi,并用i的地址来初始化pi;

7.2.2 指针间的赋值

可以用一个指针来初始化另一个指针,例如:

int i;
int *pi = &i;
int *ptri = pi;

7.2.3 野指针

我们知道,在堆栈上分配的变量初始值是不确定的,也就是说指针p所指向的内存地址是不确定的,后面用*p访问不确定的地址就会导致不确定的后果,如果导致段错误还比较容易改正,如果意外改写了数据而导致随后的运行中出错,就很难找到错误原因了。像这种指向不确定地址的指针称为“野指针”(Unbound Pointer),为为避免出现野指针,在定义指针变量时就应该给它明确的初值,或者把它初始化为NULL;例如:

int main(int argc, char *argv[])
{
	int *p = NULL;

	...
	*p = 0;
	...
	
	return 0;
}