定义变量:
数据类型 变量 = 值
数组定义:
数据类型 数组名[元素个数]={值1,值2,值3}
代码:
int main()
{//定义变量//数据类型 变量 = 值//数组定义//数据类型 数组名[元素个数]={值1,值2,值3}//数组下标 数组名[小标]//数组下标是从0开始 到数组元素个数-1int 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开始 到数组元素个数-1for (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]);//0000002491FBF748printf("%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]);//0000002491FBF748printf("%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]);}
}
输出: