1>指针数组:代表数组里面所有的元素都是指针变量
例如:int a=9,b=8,c=7;
int *p[3]={&a,&b,&c};
(p[0])=7;
printf("a=%d\n",a)
//先算[]代表一个数组3代表数组里面有3个元素,int代表元素都是存储整形变量的地址
2>如何使用指针访问一位数组
int arr[5]={1,2,3,4,5]
int i=0;
int p=arr;
for(i=0;i<5;i++)
{
printf("arr[%d]=%d\n",i,(p+1));
}
结论:只要有intp=arr;这句话存在,arr能做的事情p也能做;arr不能做的事,p也能做
访问一位数组的元素地址:&p[i],p+1
访问一位数组的元素值:怕[i],(p+i)
3 如何只用指针访问二维数组
int arr[2][3]={1,2,3,4,5,6};
int (*p)[3]=arr;
int i=0;
for (;i<2;i++)
{
int j=0;
for (;j<3;j++)
{
printf("arr[%d][%d]=%d\n,i,j,p[i][j]');
}
}
// 先算括号,代表p是一个指针变量,再算[]代表将来这指针变量指向一个大小为3的整型数组,行指针.二级指针.
结论;只要有int (*P)[3]=arr存在,arr能做的事情,p也能做,arr不能做的事情,p也能做
访问i行j列元素的值;p[i][j];'*(p[i]+j);*(*(p+i)j)
访问i行j列元素的地址:&p[i][j];'*p[i]+j;**(p+i)j
访问i行0列元素的地址arr+i; arr[i]; *(安arr+i)
网友评论