数组类型
//我声明了一个数组类型
typedef int (Myarr5)[5];
//用数据类型定义一个变量
Myarr5 arr5;//相当于 int arr5【5】
数组指针
1. //我声明了一个数组类型
typedef int(Myarr5)[5];
//定义一个指向数组类型的指针变量
//Myarr5 *pArray;
for (i = 0; i < 5; i++)
{
//a[i] = (*pArray)[i]
printf("%d\n", (*pArray)[i]);
}
2.//直接定义一个数组指针类型 用这个类型定义指针变量
typedef int(*pMyarr5)[5];
pMyarr5 myP = NULL;
int b[5] = { 1, 3, 2, 55, 6 };
myP = &b;
for (i = 0; i < 5; i++)
{
//a[i] = (*pArray)[i]
printf("%d\n", (*myP)[i]);
}
3. int c[5] = { 1, 3, 2, 55, 6 };
//直接定义一个指向数组的指针变量
int(*mypArray)[5] = &c;
for (i = 0; i < 5; i++)
{
//a[i] = (*pArray)[i]
printf("%d\n", (*mypArray)[i]);
}
注意:
a代表数组数组元素的首地址,不是整个数组的地址
&a是整个数组的地址 &a和a的数据类型不一样
//&a代表数组类型
//a代表数组首元素的类型
int a[10] = { 1, 2 };
a代表数组首元素的地址(不是整个数组的地址),请问a, 指针变量
1变量–》2指针变量–》3常量指针变量(常量指针,不能更改)
结论:不能被随便的更改指针变量的值(不能随便的改变指针的指向)
为什么它是一个const???
在定义a【5】的时候,编译器分配内存,为了能够顺利地回收内存,为了有机会让编译器拿到原始内存的首*地址,编译器就把a做成了const量,
int a[5] = { 1, 3, 2, 55, 6 };
//所以a = 0x11 是错误的,不能更改a的指向