文章目录
参考资料 《C和指针》
1 数据的基本类型
C语言中仅有四种基本数据类型,整型、浮点型、指针和聚合类型(数组和结构体)。
1.1 整型
- 整型包括char、short、int、long,并且它们都分成signed 和unsigned。
- 长整型 整型 和短整型有可能一样长。
1.1.1 整型字面值
显示的书写,可以有不同的进制表示,可以在值的后面添加L等表示字面值的类型。
1.1.2 枚举类型enum
使用枚举,相当于enum中的内容都被定义了,可以直接使用,相当于定义了一个全局变量。
1) 枚举定义
typedef enum
{
red,
blue
}color;
- 定义枚举时,中间是用“,“隔开。
- typedef之后就可以直接使用里面的枚举元素,相当于#define了。
enum color//定义枚举类型
{
red,
blue
};
仅定义枚举类型也可以使用枚举变量,但是如果要使用枚举的话需要声明枚举类型。
enum color COLOR
enum
{
red,
blue
}color;//定义枚举变量
2)枚举遍历
typedef enum{
red =0,
blue,
black,
max,
}color;
int main{
color color
for(color=red;color<max;color++)
{
printf("result=%d \n",color);
}
return 0;
}
3)强制转换
color color, color_tmp;
int i=2;
color_tmp = (color) i;//有些编译环境不需要强制转换,主要看编译器
1.2 浮点型
- 浮点数家族包括, float、double以及long double。他们可能是一样长的。32位电脑上float占4个字节,double占用8个字节。long double占16个字节。
- 浮点数默认double类型。
1.3 指针
指针是地址的另一个名字。
指针常量
字符串常量
1.4聚合类型
1.4.1 结构体
1) 定义结构
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct tag {
member-list
member-list
member-list
...
} variable-list ;
-
tag 是结构体标签。
-
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
-
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量。
在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。以下为实例:
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明了结构体变量s1
//这个结构体并没有标明其标签
struct
{
int a;
char b;
double c;
} s1;
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE
{
int a;
char b;
double c;
};
//用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
struct SIMPLE t1, t2[20], *t3;
//也可以用typedef创建新类型
typedef struct
{
int a;
char b;
double c;
} Simple2;
//现在可以用Simple2作为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;
2) 结构体数组
struct s1
{
int a,
int b,
int c
}
struct s1 array[] =
{
{1,2,3},
{4,5,6},
}//定义两个s1的struct数组
2 基本声明
2.1 显示声明
2.2 隐式声明
f(x)
{
return x;
}
其中没有声明x,和return 声明,默认是int。
3 typedef
允许为各种数据类型定义新的名字。
4 常量
常量声明时和变量一样,但是不允许修改。使用const表示。
5 作用域
当 变量在某个部分被声明后,只有在程序的一定区域才可以被访问。
5.1 代码块作用域
- 一个花括号内的所有语句成为一个代码块。
- 代码块嵌套时,内层代码块的作用域到花括号尾部便终止
- 如果内层代码块和外层代码块有一个相同名字的变量,那么外层代码块的变量在内层失去意义。
5.2 文件作用域
5.3 原形作用域
只是用于函数声明中的参数名。