- 数组的创建
type_t arr_name [const_n];
//type_t 是指数组的元素类型
//const_n 是个常量表达式,来指定数组的大小
其中[ const_n]中const_n必须是常量,不能像下面这样
int count = 10;
int arr[count];
2.数组的初始化
定义:在创建数组的同时给数组的内容⼀些合理初始值(初始化)
在初始化时一定要知道初始化的内存分配情况,下面举例子说明一下:
3.数组的访问
- 3.1区分&a[0]和&a的区别
a[0]是一个元素,a是整个数组,虽然取&a[0]和&a的值一样,但意义不一样,前者是取首元素的地址,后者是取数组的首地址
从上图可以看出获取数组每个元素地址可以通过&符或者数组名+整数的运算来获取,并且数组在内存中是连续存放的
-3.2指针(*)操作符访问数组
指针可以理解为一个变量,是一个专门来存放地址的个变量。通常指针其实是个指针变量。
int *ptr = NULL;//定义一个整型的指针变量,初始化为NULL.
char *ptr = NULL;//定义一个字符的指针变量,初始化为NULL.
double *ptr = NULL;//定义一个双精度浮点数的指针变量,初始化为NUL
而指针的访问时通过*(解引用操作符)来操作数组
int main()
{
int arr[10] = {0};
int i = 0;
int *p_arr = arr;
for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)
{
*(p_arr+i) = i;
}
for(i=0; i<sizeof(arr)/sizeof(arr[0]); ++i)
{
printf("%d", *(p_arr+i));
}
printf("\n");
system("pause");
return 0;
}
我们可以发现*数组地址就可以拿到数组的元素。
在用sizeof来计算数组大小时,切记把我一下原则;
1.sizeof(数组名),这的数组名表示整个数组,计算的是整个数组的大小
2.&数组名,这的数组名表示整个数组,取出的是整个数组的大小
3.除此之外,所有的数组名都表示数组首元素的地址
从上面代码以及结果可以看出,上面三个原则的重要性。