C语言里这个‘*’有两种作用:
1.*作为标志符,表明某个变量是一个指针变量。或者某个函数的返回值是指针类型。或者声明一个函数指针。
例:int *p;
int *add(int a, int b);
int (* add)(int a, int b);
2. *作为运算符使用。是一个间接运算符。作用是取出指针变量所对应的地址空间中的变量值。
例: a = *p;
*p++;
我看很多书和老师也不讲明这一点。开始学的时候表示很无语。
所以,这里。int *p = &a; 首先,声明p是一个指针变量。这里*是表明p是一个指针变量,而不是作为运算符使用。p存放的数据类型是int,而且代表的内容是一个地址。因此,这里可以将a的地址赋值给p(&是取地址运算符)。而不是将a的值赋值给p。而下面*p = 3; 这里的*是作为一个运算符。表示取出指针变量p所存放的地址(即a的内存地址)所对应的实际内容(即a)。然后将3赋值给它。即相当于 a = 3 |