航海员招聘有什么要求:关于函数与指针

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 21:01:33
int a(int* x,int y)
{
*x++ /*(我知道表达式的值是x以后x的值变是x+1了).前面一个*怎么算????????*/
return y;
}
我想知道*x++
是(*x)++还是*(x++)?

楼上说错了,一元运算符是右结合的,所以*x++等价于*(x++),用下面程序可以证明。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
int *p = new int[2];
memset(p,0,2*sizeof(int));
printf("%p %d %d\n",p,p[0],p[1]);
*p++;
printf("%p %d %d\n",p,p[0],p[1]);

getchar();
return 0;
}

运行结果:
00874B94 0 0
00874B98 0 0

可见是指针后移了,而不是整数加1。

那个就是定义X为一个指针类型,后面的表达式*X++,实际上是*X 再对它加1,
举个例子吧,如果已定义X为指针类型,那么*X指的就是X指向地址不存的数据,如果是5的话,那话*X++就是对它加1,就变成6了.

是*(x++),从右到左运算