您的位置:首页 > 其它

指针数组和数组指针

2013-07-11 18:37 344 查看
#include <stdio.h>

#include <stdlib.h>

int main()

{

 int  i,j;

 int a[3][2] = {{1,2},{3,4},{5,6}};

 int *p = a[0];

 int (*q)[2];//数组指针 q是一个指针,指向一维数组,每个一维数组有2个元素,所以q是行指针

 q = a;

 int *ptr[3];//指针数组,ptr有3个元素,每个元素是一个指针。

 for(i = 0; i < 3; i++)

 {

  ptr[i] = a[i];//保存每一列首数据的地址

  for(j = 0; j < 2; j++)

  printf("%d",*(ptr[i]+j));

 }

 printf("\n");

 for(i = 0; i < sizeof(a)/sizeof(int); i++)

 {

  printf("%d",*(p+i));//通过列指针,输出数组元素

 }

 printf("\n");

for(i=0;i<3;i++,p++)//p可看成是行指针

    {

        printf("%3d ",**p);//每一行的第一个元素

        printf("%3d ",*(*p+1));//每一行的第二个元素

        printf("/n");

    }

 

 for(i = 0; i < sizeof(a)/sizeof(int); i++)

 {

  printf("%d",*((int *)q+i));//通过行指针,输出数组元素

 }

 printf("\n");

 for(i = 0; i < 3; i++)

  for(j = 0; j < 2; j++)

   printf("%d",*(*(q+i)+j));

 printf("\n");

 

 for(i = 0; i < 3; i++)

 {

  printf("%d",*(*(q+i)));

  //q保存的是数组的行地址,*q保存的是a[0]的首地址,所以**q取得是数组的首元素

 }

 printf("\n");

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐