请教大神们的一个二级程序问题

缘来是你a 2014-03-06 12:56:54
void main()
{
int array[3][3],*p,i;
p=&array[0][0];
for(i=p;i<9;i++)
{
p[i]=i+1;
}
printf("%d\n",array[1][2]);
}
结果是6,,,

还请告诉由来,越详细越好,,谢谢
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘来是你a 2014-03-06
  • 打赏
  • 举报
回复
各位大神,,这个我已经用tc编译过了,,,结果正确,是6,,,我也好疑惑那个,p【i】=i+1,,
木木口口 2014-03-06
  • 打赏
  • 举报
回复
引用 6 楼 u013410838 的回复:
1. 你那个for循环应该是for(i=0;i<9;i++) 吧 2. P为int*类型的,因此p指向二维数组的首地址时候,小标每加一,指针向后移动一个int大小的内存,举个例子:p[0]就是array[0][0], p[1]就是array[0][1], p[2]就是array[0][2], p[3]就是array[1][0] 3. 数组结果如图
sorry!!!! 行号和列号标反了
木木口口 2014-03-06
  • 打赏
  • 举报
回复
1. 你那个for循环应该是for(i=0;i<9;i++) 吧
2. P为int*类型的,因此p指向二维数组的首地址时候,小标每加一,指针向后移动一个int大小的内存,举个例子:p[0]就是array[0][0], p[1]就是array[0][1], p[2]就是array[0][2], p[3]就是array[1][0]

3. 数组结果如图


lnetant 2014-03-06
  • 打赏
  • 举报
回复
int array[3][3] 3*3数组 下标分别是[0-2][0-2]
百曉生 2014-03-06
  • 打赏
  • 举报
回复
引用 2 楼 zhccl 的回复:
 for(i=p;i<9;i++)
这句代码应该编译不过吧,把一个 指针赋值给 int ??你确认你编译器能编过?
++, p 是int * 类型数据,i 是int型数据,这里会报错
zxvivian 2014-03-06
  • 打赏
  • 举报
回复
void main()
{
   int array[3][3],*p,i;
   p=&array[0][0];
   for(i=0;i<9;i++)//感觉这里应该是i=0吧,怎么能把p指针赋值给i
   {
     p[i]=i+1;
   }
   printf("%d\n",array[1][2]);
}
p指针指向array数组的首地址,然后for循环为数组的9个元素依次赋值,(1,2,3),(4,5,6),(7,8,9) 之后输出array[1][2],所以是6
  • 打赏
  • 举报
回复
 for(i=p;i<9;i++)
这句代码应该编译不过吧,把一个 指针赋值给 int ??你确认你编译器能编过?
AndyStevens 2014-03-06
  • 打赏
  • 举报
回复
1 2 3 4 5 6 7 8 9

69,371

社区成员

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

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