数组概念
数组是相同类型的变量的有序集合,是一片连续的内存空间。
数组初始化
int main()
{
int i = 0;
int a[10] = {1,2}; //其他初始化为0
int b[] = {1, 2}; //默认为[20],并不是无限大,所以需要注意不要超过了
int c[20] = {0};
for (i=0; i<10; i++)
{
printf("%d ", a[i]);
}
memset(a, 0, sizeof(a));
getchar();
return 0;
}
数组名技术盲点
数组首元素地址和数组地址是两个不同的概念,数组名代表数组首元素地址,它是一个常量。
变量的本质是内存空间的别名,一被定义成数组,就会分配内存,内存就是固定的了,所以数组名起名之后就不能被修改了。
数组首元素的地址和数组的地址值相等。
数组类型、数组指针类型、数组指针类型变量
数组类型
数据类型分为基础数据类型,非基础数据类型。
在C语言当中,数组有自己的特定类型。数组的类型由元素类型和数组的大小共同决定。
int main()
{
typedef int(MYINT5)[5];
int i = 0;
MYINT5 array;
for (i=0; i<5; i++)
{
array[i] = i;
}
for (i=0; i<5; i++)
{
printf("%d ", array[i]);
}
getchar();
return 0;
}
数组指针类型
数组指针用于指向一个数组。数组名是数组首元素的起始地址,但并不是数组的起始地址。通过取地址符作用于数组名可以得到整个数组的起始地址。
// 1) 通过数组类型定义数组指针
typedef int(ArrayType)[5];
int *a
ArrayType* pointer;
// 2) 声明一个数组指针类型
typedef int (*MyPointer)[5];
MyPointer myPoint;
// 3) 直接定义
// pointer 数组指针变量名
// type 指向的数组类型
// n 指向的数组大小
type (*pointer)[n];
指针数组的应用场景
菜单的查找,系统函数调用指针表,用于调用系统函数。,操作系统拉起应用,