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】,不知道对不对。
展开
 我来答
一剑出血
高粉答主

2012-04-04 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.6亿
展开全部
*(p++)的意思是对p取值,并且在该行语句执行结束后移动指针累加。
例如
*(p++) = 1;
就是将1写入当前p指向的空间,之后对指针p执行累加。假如刚开始p指向数组的第0元素,那么这条语句就是将1写入数组的第0元素,之后将指针p指向数组的第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。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2017-10-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6291万
展开全部

别琢磨了,这是胡写的代码:

  1. int a[4]只有4个元素,=号右边的{}里却有10个数字为其赋值,编译器不会让通过的。

  2. p没有声明,不知是什么,却把它当指针为其目标赋值a[0],大错特错。

  3. 同样*(p++)是编译器不认识的表达式,因为不知道p为何物。

  4. 即便是p已在前面声明为int *型指针了,*p=a[0];和*(p++)也是错误的,因为p还是没有指向的野指针,就试图对其指向的目标操作。

  5. 这个代码行中只有*p1;是正确的——声明了一个名为p1的int *型指针。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式