C语言—初始化数组

作者:追风剑情 发布于:2019-9-28 0:48 分类:C

示例

  1. //Visual Studio中加上这句才可以使用scanf()
  2. //否则只能使用scanf_s()
  3. #define _CRT_SECURE_NO_WARNINGS
  4. #include <stdio.h>
  5. #include <stdbool.h>
  6.  
  7. #define SIZE 4
  8. #define MONTHS 12
  9.  
  10. //argc: 参数个数 argv[]: 参数数组
  11. int main(int argc, char *argv[])
  12. {
  13. int arr0[SIZE];
  14. //从ANSI C开始支持这种括号初始化方式
  15. int arr1[SIZE] = {1, 2};//未被初始化部分会被编译器自动设置为0
  16. int arr2[] = {1,2,3};//让编译器自动设置数组长度
  17.  
  18. //未初始化的数组将打印出当前内存地址存放的值(垃圾值)
  19. for (int i = 0; i < SIZE; i++)
  20. printf("arr0[%d]=%d\n", i, arr0[i]);
  21.  
  22. for (int i = 0; i < SIZE; i++)
  23. printf("arr1[%d]=%d\n", i, arr1[i]);
  24.  
  25. for (int i = 0; i < SIZE; i++)
  26. printf("arr2[%d]=%d\n", i, arr2[i]);
  27.  
  28. const int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31};
  29. unsigned days_size = sizeof(days);//返回整个数组所占字节数
  30. printf("days_size=%u byte, %u unit\n", days_size, days_size/sizeof(days[0]));
  31.  
  32. //利用sizeof计算数组长度
  33. unsigned count = sizeof days / sizeof days[0];
  34. for (int i = 0; i < count; i++) {
  35.  
  36. }
  37.  
  38. //-- 指定初始化器 --
  39. //可以利用方括号来指定初始化哪一个元素(C99新增加的特性)
  40. //下面这句代码,首先将1号位置初始化为28,后面又将1号位置初始为29
  41. //[4]=31,30,31这一段相当于[4]=31,[5]=30,[6]=31
  42. int days1[MONTHS] = {31, 28, [4] = 31, 30, 31, [1] = 29};
  43. //如果不指定数组长度,编译器将自动设置成能容下初始化的值的长度aks =
  44. int days2[] = { 31, 28,[4] = 31, 30, 31,[1] = 29 };
  45.  
  46. int oxen[SIZE] = { 5,3,2,8 };
  47. int yaks[SIZE];
  48. //yaks = oxen; //错误的赋值方式
  49. //yaks[SIZE] = oxen[SIZE]; //数组越界
  50. //yaks[SIZE] = { 5,3,2,8 };//错误的赋值方式
  51.  
  52. //注意:数组越界赋值,可能导致改变其他变量的值,也可能
  53. //导致程序异常中止(由编译器决定处理方式)
  54.  
  55. int n = 5;
  56. const int m = 5;
  57. //C99标准允许这样声明,称为变长数组VLA
  58. //C11放弃了这一创新的举措,把VLA设定为可选,而不是语言必备的特性
  59. //float arrn[n];
  60. //const未被视为常量
  61. //float arrm[m];
  62. //sizeof表达式被视为常量
  63. float constarr[sizeof(int)];
  64.  
  65. system("pause");
  66. return 0;
  67. }

运行测试

1111.png

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号