关于数组和指针的问题

LubinLew 2013-05-26 06:07:40
直接上程序,求解释


#include <stdio.h>

int main(void)
{
char str[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
char *p = NULL;
int i = 0;

p = str;
for (i = 0; i < 10; i++)
{
printf("p[i] = %d\n", p[i]);
printf("i[p] = %d\n", i[p]);
}
return 0;

}
...全文
83 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-05-26
  • 打赏
  • 举报
回复
所以说要广涉猎。
buyong 2013-05-26
  • 打赏
  • 举报
回复
i[p]?这真是怪异的写法。能编译?
starytx 2013-05-26
  • 打赏
  • 举报
回复
i[p]头一次见这种写法,见识大涨啊
hugett 2013-05-26
  • 打赏
  • 举报
回复
刚开始看震惊了一下。。没见过这么写的。。不过想想也一样。。都是等于*(p+i)。。
AnYidan 2013-05-26
  • 打赏
  • 举报
回复
引用 2 楼 usingnamespace_std 的回复:
i[p]和p[i]是一样的意思,都表示p这个数组的第i个元素,不过i[p]这么写会被扔鞋子的
i[p]==p[i]==*(p+i)
绯红女王 2013-05-26
  • 打赏
  • 举报
回复
一样的意思,就像 a[i] 可以写成 *[a+i]
baichi4141 2013-05-26
  • 打赏
  • 举报
回复
常用的数组下标访问a[5],本质上是把数组名隐式转化为指针,将a[5]转化为*(a+5) 所以a[5]和5[a]完全等价,都等同于*(a+5)
baichi4141 2013-05-26
  • 打赏
  • 举报
回复
a[b]==*(a+b)==b[a] 三种写法完全等价,语言标准就这么规定的
bewinged 2013-05-26
  • 打赏
  • 举报
回复
这种写法不常用,结果是一样的
SKATE11 2013-05-26
  • 打赏
  • 举报
回复
这句话 printf("i[p] = %d\n", i[p]); 大问题 没这个写法
Jackie_Zhu 2013-05-26
  • 打赏
  • 举报
回复
i[p]和p[i]是一样的意思,都表示p这个数组的第i个元素,不过i[p]这么写会被扔鞋子的
帅文浩 2013-05-26
  • 打赏
  • 举报
回复
p[i]表示字符0到9,i[p]表示数字0到9.下次给出代码,也附带说明问题。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧