1.定义一个数组类型
void main()
{
typedef int(MyArray)[5]; //定义一个数组数据类型
MyArray myarray; //等于int myarray[5];
for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
{
myarray[i] = i + 1;
}
for (int i=0;i< sizeof(myarray) / sizeof(myarray[0]);i++)
{
printf("%d ",myarray[i]);
}
printf("\n");
printf("myarray:%d , myarray+1:%d\n",myarray,myarray+1); //myarray为代表首元素地址 步长为4
printf("&myarray:%d , &myarray+1:%d\n", &myarray, &myarray + 1); //&myarray代表数组地址,步长为20
system("pause");
return ;
}
2.定义数组指针的三种方法
void main()
{
typedef int(MyArray)[5]; //定义一个数组类型
MyArray *pArray; //定义一个指针变量 指向数组
MyArray myarray; //等于int myarray[5]; 相当于一级指针
pArray = &myarray; //pArray指向数组的地址 相当于二级指针 pArray步长为20
for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
{
(*pArray)[i] = i + 1;
}
for (int i = 0; i < sizeof(myarray) / sizeof(myarray[0]); i++)
{
printf("%d ", (*pArray)[i]);
}
}
//定义声明一个数组指针类型
void main()
{
typedef int(*PArrayType)[5];
PArrayType pArray; //定义个指针变量
int a[5];
pArray = &a;
for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
(*pArray)[i] = i + 1;
}
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
printf("%d ", (*pArray)[i]);
}
}
void main()
{
int(*pArray)[5]; //直接定义一个指向数组的 数组指针变量
int a[5];
pArray = &a;
for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
(*pArray)[i] = i + 1;
}
for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)
{
printf("%d ", (*pArray)[i]);
}
}
3.多维数组
void main()
{
int a[3][5];
int num = 1;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
a[i][j] = num++;
}
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("a:%d , a+1:%d",a,a+1); //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
printf("&a:%d , &a+1:%d", &a, &a + 1); //&a代表二维数组的首地址,步长为4B*3*5=50
}
4.多维数组和指针
int a[3][5];
int num = 1;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
a[i][j] = num++;
}
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("a:%d , a+1:%d \n",a,a+1); //a代表第一行的首地址 a+1代表第二行的首地址 步长为4B*5=20
printf("&a:%d , &a+1:%d \n", &a, &a + 1); //&a代表二维数组的首地址,步长为4B*3*5=50
int(*pArray)[5]; //定义一个指向数组类型的指针变量
pArray = a; //让指针指向a(二维数组第一行的首地址)
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%4d", pArray[i][j]); //二维数组的本质是二级指针
}
printf("\n");
}