#include <stdio.h>
/*指针数组 本质上是一个数组
变量定义 int a:数值数组 int num[5];
指针变量定义 int *p;
指针数组定义 int *num[5];//在指针数组中 里面的储存的内容是5个地址
//二维数组 每一行都行地址num[i] 看成5个数组*/
int num[5][4]=
{
1,2,3,4,//num[0]行
5,6,7,8,//num[1]行
9,10,11,12,
13,14,15,16
17,18,19,20
};
//通过指针指向数组 存的所个地址
int number[4],*p=number;//p指向了number数组的首元素
//定义一个指针数组 存的多个地址
int *p_num[5]={NULL};
void main(void)
{
int i;
p_num[0]=num[0];
//指针数组的第0个元素 指向了二维数组num的第0行的首地址
for (p_num[0]=num[0];p_num[0]<&num[0][4];p_num[0]++)
{
printf("%d\t",*p_num[0]);
}
printf("\n");
}
#include <stdio.h>
int num[5][4]=
{
1,2,3,4,
5,6,7,8,
9,10,11,12,
13,14,15,16
17,18,19,20
};
int number[4],*p=number;
int *p_num[5]={NULL};
void main(void)
{
int i,j;
for (i=0;i<5;i++)
{
p_num[i]=num[i];//指针数组的每一个元素分别指向二维数组每一行的首地址
}
for(i=0;i<5;i++)
{
for (j=0;j<4;j++)
{
printf("%d\t",*(*(p_num+i)+j));//*(p——num+i)<==>p_num[i]<==>&num[i[0]//p_num[i]+j==>&num[i][j]
}
printf("\n");
}
//通过指针数组对数组num进行输出
}
#include <stdio.h>
int num[5][4]=
{
1,2,3,4,
5,6,7,8,
9,10,11,12,
13,14,15,16
17,18,19,20
};
int number[4],*p=number;
int *p_num[5]={NULL};
void main(void)
{
int i;
p_num[0]=num[0];
for (p_num[0]=num[0];p_num[0]<&num[0][4];p_num[0]++)
{
printf("%d\t",*p_num[i]);
}
printf("\n");
}