指针变量一定要先进行初始化,然后才能使用。初始化指要对指针变量进行赋值,将一个地址值赋值给指针变量。极为常犯的错误是:
int *a;
*a = 12; /*未对它进行初始化,没有办法预测12这个值将存储于什么地方*/
分析几个指针的例子;
1、*d = 10 - *d; 两个间接访问操作。右边的间接访问作为右值使用,所以它的值是d所指向的位置所存储的值(a的值)。左边的简介访问作为左值使用,所以d所指向的位置(a)把赋值符右侧的表达式的计算结果作为它的新值。
2、*&a = 2;这条语句的意思是:把值2赋值给变量a。这条语句在功能上与a=2是相同的。但是,它涉及更多的操作。除非编译器知道你在干什么并丢弃额外的操作,否则它所产生的目标代码将会更大、更慢。
3、int a = 12; int *b = &a; int **c = &b;指针变量和其他变量一样,占据内存中某个特定的位置,所以用&操作符取得它的地址是合法的。
值的类型并非值本身所固有的一种特性,而是取决于它的使用方式。比如在算数运算中,char型值可以被强制转换为int型的值。一个变量的值就是分配给这个变量的内存位置所存储的数值。通过一个指针访问它所指向的地址的过程称为简介访问。用于执行简介访问的操作符是单目操作符*。
值的类型并非值本身所固有的一种特性,而是取决于它的使用方式。比如在算数运算中,char型值可以被强制转换为int型的值。一个变量的值就是分配给这个变量的内存位置所存储的数值。通过一个指针访问它所指向的地址的过程称为简介访问。用于执行简介访问的操作符是单目操作符*。