定义变量:
数据类型 变量 = 值
数组定义:
数据类型 数组名[元素个数]={值1,值2,值3}
代码:
int main()
{
//定义变量
//数据类型 变量 = 值
//数组定义
//数据类型 数组名[元素个数]={值1,值2,值3}
//数组下标 数组名[小标]
//数组下标是从0开始 到数组元素个数-1
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr1[i]);
}
system("pause");
return EXIT_SUCCESS;
}
也可以换个方法写:
int main()
{
//定义变量
//数据类型 变量 = 值
//数组定义
//数据类型 数组名[元素个数]={值1,值2,值3}
//数组下标 数组名[小标]
//数组下标是从0开始 到数组元素个数-1
for (int i = 0; i < 10; i++)
{
int arr2[] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", arr2[i]);
}
system("pause");
return EXIT_SUCCESS;
}
输出都是:
数组元素参与计算
代码:
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//数组元素参与计算
arr[3] = arr[5];
arr[2] = arr[3];
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr[i]);
}
}
输出:
接下来我们看看数组在内存中的地址,它是怎样存放的;究竟是一个一个存还是一串全部存进去,究竟是连续性的还是不连续性的
代码:
int main()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//查看数组下标为0的地址
printf("%p\n", &arr[0]);//0000002491FBF748
printf("%p\n",&arr[1]);//0000002491FBF74C
}
输出:
内存中是以16进制来存储的,同时我们定义的数组是int类型,4个字节大小;
通过计算我们发现,它是连续的
由此我们得出结论:
数组是在内存中连续的相同类型的变量空间
画一个图解释:
同时,数组名是一个常量,指向数组首地址的常量
代码:
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%p\n", &arr[0]);//0000002491FBF748
printf("%p\n", arr);
}
输出:
接下来我们说说数组在内存中占的大小
代码:
int main()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("数组在内存中占的大小=%d\n", sizeof(arr));
}
输出:
可以看见我们的数组在内存中占了40个字节大小,因为sizeof的单位是int
我们的数组一共有10个值,每个值占了4个字节,因此 数组在内存中占40字节大小
因此我们可以得出结论:数组在内存中占的大小=数组类型(int类型=4字节)*元素个数
接下来我们验证一下我们得出的结论
代码:
int main()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("数组在内存中占的大小=%d\n", sizeof(arr));
printf("数组元素大小=%d\n", sizeof(arr[0]));
}
输出:
开始计算(代码):
int main()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("数组在内存中占的大小=%d\n", sizeof(arr));
printf("数组元素大小=%d\n", sizeof(arr[0]));
printf("数组元素个数=%d\n", sizeof(arr) / sizeof(arr[0]));
}
输出结果:
接下来讲解求这些的作用:
其中之一:循环
代码:
int main()
{
//数组在内存中的存储方式和大小
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf("%d\n", arr[i]);
}
}
输出: