C语言:数据类型


参考资料 《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 原形作用域

只是用于函数声明中的参数名。

5.4 函数作用域

6 链接属性

7 存储类型

8 static关键字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值