1.结构体 struct
格式:
struct Student{
char *name;
int age;
float height;
};
struct Student s;//定义一个结构体变量
//给结构体成员赋值
s.name="kristy";
s.age=22;
s.height=1.63;
可连写并省略结构体名
struct {
char *name;
int age;
float height;
} s;
2.枚举 enum
格式:
enum Season{spring,summer,autumn,winter};
enum Season s;//定义一个枚举变量
可连写并省略枚举名
<span style="font-size:18px;">enum {spring,summer,autumn,winter} s;</span>
3.typedef
作用:为各种数据类型起别名,可使代码变得简洁。
typedef与#define的区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。 2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名。3)#define后面无需写“;” typedef需要写“;”
<span style="font-size:18px;">#define String1 char * // </span><span style="font-size:14px;">遇到String1 替换为 char *</span><span style="font-size:18px;">
typedef char *String2;// </span><span style="font-size:14px;">用String2 <span style="font-family: Arial, Helvetica, sans-serif;">表示char *</span></span><span style="font-size:18px;">
</span><span style="font-size:18px;">
int main(int argc, const char * argv[]) {
String1 str1, str2;
String2 str3, str4;
return 0;
}</span>
str1,str3,str4为指针变量,str2为char类型变量