数组指针,指针数组和二维数组

该例程为个人用以理解数组指针,指针数组和二维数组之间的关系,以及它们的简单使用方法,仅供理解和参考。

关于三者的概念可以查阅相关书籍或资料。

#include <stdio.h>

int main()
{
#if 0
int i;
char *pch[6]={"一","二","三","四","五","六"};//汉字2bytes,指针数组 
for(i=0;i<6;i++)
{
printf("%s, ",pch[i]);
}
printf("\n");
for(i=5; i>=0; i--)
{
printf("%s\n",pch[i]);
}
#endif
#if 0
int i;
int c[4] = {1,3,5,7};
int *a[4]; //指针数组
int (*b)[4]; //数组指针
b=&c;
for(i=0;i<4;i++)
{
a[i]=&c[i];
}
for(i=0;i<4;i++)
{
printf("a[%d]=%d\n",i,*a[i]);
}
for(i=0;i<4;i++)
{
printf("b[%d]=%d\n",i,(*b)[i]);
}


printf("&c=%x\n", c);//数组名为首地址
printf("c[0]=%d\n", c[0]);//数组名+index对应于index的元素
printf("(*b)=%x\n", (*b));//(*b)相当于数组名c,为首地址
printf("(*b)[0]=%d\n", (*b)[0]);//index数组元素
printf("*(*b)=%d\n", *(*b));//*(*b)数组首地址元素
#endif
#if 1
int i;
char a[3][5] = {"abcd\0",     //二维数组
   "efgh\0",
               "ijkl\0"};
char *p[3]={a[0],a[1],a[2]};  //指针数组
char (*q)[5];                 //数组指针


for(i=0;i<3;i++)
{
printf("a[%d]string=%s\n",i,a[i]);
}


/* for(i=0;i<3;i++)  //同上面的初始化
{
p[i]=&a[i];
}
*/
for(i=0;i<3;i++)
{
printf("p[%d]string=%s\n",i,p[i]);
}

printf("&a=%x\n",a);
printf("&p=%x\n",*p);

for(i=0;i<3;i++)
{
q=&a[i];
printf("q%d->string=%s\n",i,q);
}


#endif
return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值