| 
 构造类型  
 1.数组 1> 只能由同一种类型的数据组成 2> 定义:数据类型 数组名[元素个数];= 数组容易犯的错误总结: // 使用注意     // 都是正确写法     //int ages[5] = {10 , 11, 12, 67, 56};     //int ages[5] = {10, 11};     //int ages[5] = {[3] = 10, [4] = 11};     //int ages[] = {10, 11, 14};       // 错误写法     // int ages[]     // 错误写法     /* 只能在定义数组的同时进行初始化     int ages[5];     ages = {10, 11, 12, 14};     */      // 正确写法     // int ages['A'-50] = {10, 11, 12, 14, 16};     //int size = sizeof(ages);     //printf("%d\n", size);  
    // 正确写法     /*     int count = 5;     int ages[count];     ages[0] = 10;     ages[1] = 11;     ages[2] = 18;     */     //printf();     // 错误写法     // 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写     //int ages[count] = {10, 11, 12}; 2.结构体 1> 可以由不同类型的数据组成 2> 先定义类型,再利用类型定义变量  
结构体需要注意的几点:  
1.定义结构体变量的3种方式  1> 先定义类型,再定义变量(分开定义)  struct Student  {     int age;  };  struct Student stu;  
 2> 定义类型的同时定义变量  struct Student  {     int age;  } stu;  struct Student stu2;  
 3> 定义类型的同时定义变量(省略了类型名称)  struct  {     int age;  } stu;  2.结构体类型的作用域  1> 定义在函数外面:全局有效(从定义类型的那行开始,一直到文件结尾)  2> 定义在函数(代码块)内部:局部有效(从定义类型的那行开始,一直到代码块结束)  
 
 
 |