数组的知识点汇总
1、数组的含义
数组是一组相同类型元素的集合。
2、数组的创建方式
类型 + 数组名【常量】。例如:int arr[10];但是,如果是: const int count = 10; int arr[count]; 就不行了。
因为,数组创建下标引用操作符【】中要给一个常量才行,不能使用变量,即使是常变量也不行。
3、数组的初始化
数组的初始化是指:在创建数组的同时给数组的内容一些合理的初始值。
4、数组在创建的时候可以指定数组大小,如果不指定数组的大小,那么数组将根据数组元素的个数确定数组的大小。
例如:int arr1[3] = {0};//未初始化的自动赋0
char arr2[] = “abc”;
char arr3[3] = {‘a’, ‘b’, ‘c’};
char *p = “abcdef”;
5、数组的存储——连续存储。看图:
6、数组是使用下标来访问的,下标是从0开始。
7、数组的大小可以通过计算得到。
【例】int arr【10】;
int sz = sizeof(arr) / sizeof (arr[0]);
8、内存中的每一个内存单元(字节)对应一个地址。如下图:
9、数组的数组名其实是数组首元素的地址。
【例】
#define _CRT_SECURE_NO_WARNINGS 1
# include <stdio.h>
# include <stdlib.h>
int main()//一维数组的指针访问
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printf(“%p/n”, arr);//输出的是数组的首元素的地址
printf(“%d/n”, *arr);//输出的是数组的首元素的值
system(“pause”);
return 0;
}
输出为:
10、数组名+整数可以获得数组每个元素的地址。
【例1】
#define _CRT_SECURE_NO_WARNINGS 1
# include <stdio.h>
# include <stdlib.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf(“&arr[%d]=%p/n”, i, &arr[i]);//数组元素的地址
printf(“%p/n”, arr + 1);//数组第二个元素的地址
}
system(“pause”);
return 0;
}
输出为:
【例2】
# include <stdio.h>
# include <stdlib.h>
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;//把i的值赋给对应的指针
}
for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf(“%d “, *(p_arr+i));//输出指针对应的值
}
printf(“/n”);
system(“pause”);
return 0;
}
输出为:
11、二维数组在内存中也是连续存储的。
【例】程序为:
# include <stdio.h>
# include <stdlib.h>
int main()
{
int i = 0;
int arr[3][4];
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf(“&arr[%d][%d]=%p/n”,i,j,&arr[i][j]);
}
}
system(“pause”);
return 0;
}
输出为:
二维数组存储的示意图,如下图:
12、在32位的平台上指针的大小是4个字节,64位平台是8个字节。
注:指针可以理解为一个变量,是一个专门用来存放地址的一个变量,通常我们所讲的指针就是指针变量。
13、数组名代表整个数组的时候只有两种情况:
A、sizeof(数组名),这里的数组名表示整个数组。
B、&数组名,这里的数组名表示整个数组。
14、数组作为函数参数的时候,不会把整个数组传递过去,实际上只是把数组的首元素的地址传递过去。所以,即使在函数参数部分写成数组的形式:int arr[]表示的依然是一个指针:int *arr。
【例】
结果是1而不是数组元素的个数。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/18219.html