c语言 int a[4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1; *p=a[0]; *(p++)是什么意思。
上面程序我瞎写的。主要是问*(p++)是什么意思。他那个增1,是增的哪个,是地址增1吗。我的理解是指针指向a【1】,不知道对不对。...
上面程序我瞎写的。主要是问*(p++)是什么意思。
他那个增1,是增的哪个,是地址增1吗。
我的理解是指针指向a【1】,不知道对不对。 展开
他那个增1,是增的哪个,是地址增1吗。
我的理解是指针指向a【1】,不知道对不对。 展开
2012-04-04
展开全部
瞎写肯定错误多,先改正确:
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; //[]中的4是多余的。
p=&a[0]; //p指向a[0]。
printf("%d\n",*(p++)); //*(p++)等价于*p++,表示取p所指元素的值,p再指向下一个元素,因此,这儿输出0。
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; //[]中的4是多余的。
p=&a[0]; //p指向a[0]。
printf("%d\n",*(p++)); //*(p++)等价于*p++,表示取p所指元素的值,p再指向下一个元素,因此,这儿输出0。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
别琢磨了,这是胡写的代码:
int a[4]只有4个元素,=号右边的{}里却有10个数字为其赋值,编译器不会让通过的。
p没有声明,不知是什么,却把它当指针为其目标赋值a[0],大错特错。
同样*(p++)是编译器不认识的表达式,因为不知道p为何物。
即便是p已在前面声明为int *型指针了,*p=a[0];和*(p++)也是错误的,因为p还是没有指向的野指针,就试图对其指向的目标操作。
这个代码行中只有*p1;是正确的——声明了一个名为p1的int *型指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询