码迷,mamicode.com
首页 > 编程语言 > 详细

c语言指针与二维数组

时间:2015-12-19 23:02:26      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

1 指针数组

例子:

int i,j;
int x[2][3]={{1,2,3},{4,5,6}};
int *p[2]={x[0],x[1]};//声明一个含有2个元素的一维int指针数组p

for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            cout<<*(p[i]+j)<<endl;
        }
    }

 

输出语句为cout<<p[i][j]<<endl;也是可以的。

int i,j;
int x[2][3]={{1,2,3},{4,5,6}};
int *p=x[0];//x[0]不等价于x,经过程序已经验证。
for(;p<x[0]+6;p++)
{
    printf("%d\t",*p);
}

 

对比2中的例子,此时p加1是指向下一个元素,2中的例子p加1指向下一行元素的首地址。

2 数组指针

int i,j;
int x[2][3]={{1,2,3},{4,5,6}};
int (*p)[3]=x;//声明一个指向具有3个元素的int型数组的指针p
              //圆括号不可省略

for(i=0;i<2;i++)
    {
        for(j=0;j<3;j++)
        {
            cout<<p[i][j]<<endl;

            //或者cout<<*(*(p+i)+j)<<endl;
        }
    }

 

以上两种形式都紧扣数组在内存中存储的结构。指针数组比较好理解。数组指针没有理解呀,记住。。。。。。吼!!!

总的来说:二维数组中x代表行地址,x[0]代表元素地址。把握这个原则。

*p[2]={x[0],x[1]};//*(p[0]+i)  return p;

*p=x[0];//*(p+i)    return p;

(*p)[3]=x;//*(*(p+i)+j)    return p[0];

 

还是有点乱。。不断修改中。

c语言指针与二维数组

标签:

原文地址:http://www.cnblogs.com/dongzhuangdian/p/5059884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!