星号*的理解
在C语言中, *的用途有两个,一个是用于表示乘号,第二个与指针有关。虽然这两种用途都会用到,但这两者没有任何关系。*在指针中的用途主要有两个方面,第一种是用在指针定义的时候,与前面的类型结合,用于表示被定义指针变量的类型, *的个数表明了定义的指针变量的级数,如下所示。
int *p; int* p;
*靠前靠后都没关系,这时的“与p是两个不同的东西,星号表明p是一个一级指针变量,用于存放一个一级地址。但是需要注意下面的情况。
int *p1, *p2: // p1和p2都是int型的一级指针变量
int *p1, p2: // p1是int型的一级指针变量, p2只是一个普通的int型变量
第二种就是解引用,解引用时, "p表示p所指向的空间,这时的也称为取空间操作,找到p所指向的空间。必须强调的是,这时的"p是一个整体,不能割裂来看,如下所示。
int *p=&a;*p =10;//等价于a-10;但是写成* p= 10;就不对了。
*作为解引用时(也就是取空间操作时) ,得到p所指向的空间后,其用途有两种,一个是读空间内容,还有就是向空间写入新的内容。