简单指针数组,数组指针的总结。

指针数组:表示数组的元素是地址
例:
int* a[5];
分解式定义
1:a[5]={&b,&c,&d,&e,&f};
2:a前边是每个元素的类型 int*
3:所以这种数组这样定义为int* a[5]={&b,&c,&d,&e,&f};每个元素是地址
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int b=1,
c=2,
d=3,
e=4,
f=5;
int* a[5]={&b,&c,&d,&e,&f};
printf("%d,%d,%d,%d,%d\n",*a[0],*a[1],*a[2],*a[3],*a[4]);//1,2,3,4,5
// int a[3]={1,2,3};
// int b[4]={3,4,5,6};
// int c[2]={7,8};
// int *p[3]={a,b,c};
//printf("%d,%d,%d",p[0][2],p[1][2],p[2][1]);//3,5,8
system(“pause”);
return 0;
}

数组指针:表示指向数组地址的指针
例:
int a[5];
int(*p)[5]=&a;//表示数组的地址
分解式定义
1:*p p是一个指针
2:int [5];p所指向的类型,数组类型
3:int[5] (*p)这应该是通常的组合类型,但C语言不允许这样写,所以为int (*p)[5];

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[5]={1,2,3,4,5};
//int *p=&a[2];
int (p1)[5]=&a;//&a表示数组地址 a表示数组首元素地址 优先级p+[]优先于+p所以加括号
//*p1==a;
printf("%p,%p,%d\n",&(*p1)[2],&a[2],(*p1)[2]);//3
system(“pause”);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值