一.数组指针用于指向一个数组
int a[10];
数组名是数组首元素的起始地址,但是并不是数组的起始地址。
通过将取地址&作用于数组名可以得到整个数组的起始地址。
//定义数组指针有两种
①通过数组类型定义数组指针
typedef int(ArrayType)[5];
ArradyType* pointer;
②声明一个数组指针类型
typedef int (*MyPointer)[5];
MyPointer myPoint;
③直接定义:
int (*pointer)[n];
pointer:数组指针变量名
type:为指向的数组类型
n:为指向的数组大小
注意这个地方是type类型(比如int(*pointer) [10])
二.数组指针
①通过数组类型定义数组指针
//定义数组指针变量的方法
//用数组类型+*来定义它
void main4()
{
const char* Myarray[] = { "1111","33333","aaaa" };//指针 数组
//数组指针 用一个指针,来指向一个数组
typedef int(MyArrayType)[5];//定义了一个数据类型,数组数据类型
MyArrayType myArray;//int myArray[5] //用类型定义变量
MyArrayType* pArray;//定义一个指针变量,这个指针变量,指向一个数组
{
int a;
int* p = NULL;
p = &a;
}
{
//pArray = &myArray;
int myArray2[5]; //相当于一级指针
pArray = &myArray2;//相当于二级指针
for (int i = 0; i < 5; i++)
{
//myArray2[i] = i + 1;
(*pArray)[i] = i + 1;
}
for (int i = 0; i < 5; i++)
{
printf("%d ", (*pArray)[i]);
}
}
return;
}
②声明一个数组指针类型
//定义数组指针变量的第二种方法
//可以声明一个数组指针类型,用这个指针类型来定义变量
void main5()
{
//定义声明一个数组指针类型
typedef int(*PArrayType)[5];//类型,用类型定义变量天经地义
PArrayType pArray;//告诉C++编译器给我分配一个指针变量
int c[5];
pArray = &c;
for (int i = 0; i < 5; i++)
{
(*pArray)[i] = i + 1;
}
for (int i = 0; i < 5; i++)
{
printf("%d ", (*pArray)[i]);
}
system("pause");
return;
}
③直接定义
//定义数组指针变量的第三种方法 直接定义
//前两种方法都是通过 类型定义变量 比较麻烦
void main()
{
int(*pMyArray)[5];//直接定义一个指向数组的 数组指针变量
int c[5];
pMyArray = &c;
for (int i = 0; i < 5; i++)
{
(*pMyArray)[i] = i + 1;
}
for (int i = 0; i < 5; i++)
{
printf("%d ", (*pMyArray)[i]);
}
system("pause");
return;
}