指针数组和数组指针

#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++,q++)//p可看成是行指针
    {
        printf("%3d ",**q);//每一行的第一个元素
        printf("%3d ",*(*q+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;
}

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值