jyongchong
2015-08-15 01:39
采纳率: 50%
浏览 1.5k
已采纳

指向多维数组的指针变量

#include
int main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p;
for(p=a[0];p<a[0]+12;p++)
{
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);
}
}

把for(p=a[0];p<a[0]+12;p++)改成for(p=a[0];p<a+3;p++)为什么是正确的??改为for(p=a[0];p<p+12;p++)为什么是错误的(p不就等于a[0]么)??

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Robot-C 2015-08-15 01:43
    已采纳

    指向多维数组的指针变量

    1 多维数组的指针
    多维数组可以看作是一维数组的延伸,多维数组的内存单元也是连续的内存单元。换句话说,C语言实际上是把多维数组当成一维数组来处理的。下面以二维数组为例说明这个概念。
    比如,现在有一个int型的二维数组a[3][4],计算机认为这是一个一维的数组a[3],数组的三个元素分别是a[0],a[1]和a[2]。其中每个元素又是一个一维数组,例......
    答案就在这里:指向多维数组的指针变量
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    已采纳该答案
    打赏 评论
  • qq_26367235 2015-08-15 02:32

    p=a[0]就是p=*a吧 p=*a=a[0][0]

    打赏 评论
  • AgoniAngel 2015-08-15 03:55

    p=a[0]可见p是行指针,p++就指向下一行,所以只需要加3次。

    p<p+12明显是错的,这个条件恒成立,所以是个死循环。

    打赏 评论

相关推荐 更多相似问题