C语言中*与[ ]有什么区别?

 我来答
zyh1141298056
2012-03-26 · TA获得超过1308个赞
知道小有建树答主
回答量:500
采纳率:100%
帮助的人:585万
展开全部
用你的例子来说,变量a,p都指向的是一个整形数组的首地址,你可以用下面的打印语句:
printf("%p\n%p\n",a,p);
两个值是一样的。这里的a和p没有太大的区别,只是a是有自己的内存空间的(3个整数的空间),而p没有。
a[i](p[i])是表示从a(p)这个地址开始往后数i个元素,而这里的a,p指向的是同一个空间,所以a[i],p[i]是相同的
而*a(*p)表示的是当前你的指针所指向的元素。你的例子当中,*a,*p表示的都是数组的第一个元素,当然你也可以将指针向后移动
roaming_sheep
2012-03-26 · TA获得超过699个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:692万
展开全部
*a == a[0]
*(a+i) == a[i]

区别当然有,优先级不一样啊, [] 的优先级高
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
放开内个梅西
2012-03-26
知道答主
回答量:12
采纳率:100%
帮助的人:2.9万
展开全部
*是乘法 [ ] 是数组,,,,,,
追问
我是想问指针运算符*与取地址运算符[ ],在使用时有什么区别?例如:
#include
int main ()
{int a[3]={23,4,66},i;
int *p=a;
p=a;
for(i=0;i<3;i++)
printf("*p[i]=%d,a[i]=%d\n",p[i],a[i]);
return 0;
}
结果a[i]与p[i]相等。这是为什么?指针运算符*与取地址符是怎么进行运算的?
追答
不好意思 我只是为了完成任务过来打酱油的。。  不过你这个例子 for循环控制输出 p[i]和p[a]的每个元素 p=a   所以结果相等啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式