C语言提供了一个称作“间接访问运算符”的单目运算符,“”当指针变量中存放了一个确切的地址值时,就可以用“间接访问运算符”通过指针来引用该地址的存储单元。
int p,i=10j;
上面的赋值语句我们可以这样理解,j变量的值是有指针指向空间中的赋值给予的。这里的p代表指针p中存放的变量i的地址中的值, *不是乘,而是用来说明指针的说明符。
j=i~~~~~~~~~j=(&i)如果有这样的表达式代表:
j=*p,k=0;
*p+=1
++p
(p)++
注意:当p出现在赋值号左边是,代表的是指针所指的存储单元,当p出现在赋值号右边时,代表的是指针所指的存储单元的内容。
如果有:
*p+=1
++*p
(*p)++
这三个代表式有什么不一样吗?
++和 * 两个运算符的优先级相同。但按自右向左的方向结合。因此++p相当于++(*p)。而在(*p)++中,一对括号不可以少,(*p)++代表先取里面的值然后再加1,而如果去掉怎么成了 *p++,根据顺序,先++然后再取值。这样就成了先p++再取值。而p++就是指针先向后移动