求教一个用指针变量指向数组元素的问题

我写了这样一个程序#include<stdio.h>intmain(void){inta[10]={1,2,3,4,5,6,7,8,9,0};inti;int*p;for... 我写了这样一个程序
#include<stdio.h>
int main (void)
{
int a[10]={1,2,3,4,5,6,7,8,9,0};
int i;
int * p;
for(i =0 ; i< 10; i++)
{
scanf("%d",&a[i]);

}
for (p=a ; p<(a+10) ; p++)

{
printf("%d\n",*p);
}
}

目的是用*p输出数组中的数字
但在
for (p=a ; p<(a+10) ; p++)

{
printf("%d\n",*p);
}
这个地方我有两个问题不是很明白
第一问题是
a是数组a[10]的一个起始地址那么将a可以直接复制给p 那么*p=a 可为什么写成
(*p+0)会报错
第二个问题是
p=a 但如果写成(p+0)为什么也会报错
展开
 我来答
kafied
2013-02-22 · TA获得超过5084个赞
知道大有可为答主
回答量:1.6万
采纳率:0%
帮助的人:4775万
展开全部
决不是非法的,只有P1,P2所指的地址的数组范围,运行错误。
从来不合法的,因为编译器不检查指针。
追问
兄弟   决不是非法的和从来不合法的是什么意思
veket的小号
2013-02-22 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3992万
展开全部
google 一下 左值 右值
p+0 是个 表达式 你见过给 表达式 赋值的吗。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
49413445480dc
2013-02-22 · 超过25用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:30.3万
展开全部
如果是*(p+0)就正确了,访问数组中的下标为i的元素使用*(p+i)表示!
还有在C语言中表达式不能放在“=”的左边,即表达式不可作为左值!
追问
能不能具体的讲一下   我写的这个里面    你说的表达式被写成左值的地方是哪句
追答
就是你所说的p+0=a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cb4861d
2013-02-22
知道答主
回答量:14
采纳率:0%
帮助的人:10.1万
展开全部
我没有明白你的意思
你可以把你说的会报错的代码贴出来看看不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式