C语言——类型总结

C语言数据类型分为基本类型派生类型,派生类型是指从某些类型派生出来的类型。

基本数据类型如下:
  • char
  • int
  • float
  • double

在基本数据类型前可以加一些限定符:short和long也是两个限定符。

short int sh;
long int counter;

以上的类型声明中,关键字int可以省略。以下为写法都是相同的情况。

推荐使用同义的类型
char
signed char
unsigned char
shortsigned short,short int,signed short int
unsigned shortunsigned short int
intsigned,signed int,无指定类型
unsigned intunsigned
longsigned long,long int,signed long int
unsigned longunsigned long int
float
double
long double
long long

基本类型所占内存的大小必须依赖处理环境进行计算。

派生类型如下:
  • 指针
  • 数组(”元素个数”,作为属性)
  • 函数(参数信息作为属性)
  • 结构体/联合体
  • 不完全类型

1.指针

由引用类型T派生的指针类型有时称为“指向T的指针”。对于指针类型来说,因为它指向的类型各不相同,所以都是从存在的类型中派生出“指向T的指针”。

对指针进行加法运算,指针只前进指向类型的大小的距离。例如:指向数组的指针。

int array[3]; //array可以被解读成指向数组初始元素的指针。
int (* array_p)[3];//指向数组的指针。派生过程:由基本类型int派生出数组,再由该数组派生出指针。

array_p = &array;//正确
array = &array_p;//编译器会报错

array与array_p区别:当对array_p进行加1时,指针会前进12(int长度乘以数组长度=4*3=12)个字节。

指针所占内存的大小也是依赖处理环境,与派生源的大小无关,指针的大小是固定的。

2.数组

数组类型本质就是将一定个数的派生源的类型进行排列而得到的类型。

数组占内存的大小 = 派生源的类型大小 × 数组的元素个数

3.函数

函数类型与其他派生派生类型的区别:无论是int、double、数组、指针、结构体,只要是函数以外的类型,大体都可以作为变量被定义。而且,这些变量在内存中占用了一定的空间。并且可以通过sizeof运算符取得他们的大小。而函数类型在C语言中没有固定的长度,所以不存在函数类型的变量

所以不存在由函数派生的派生类,例如:

  • 函数类型的数组
  • 行数类型生成的结构体或联合体

函数无法计算大小。
函数类型是不能派生出除了指针以外的其他任何类型。
C语言中数组不能作为函数的返回值。所以数组也无法派生出函数。

4.结构体和联合体

结构体在声明中它和数据类型修饰符(也就是int、double)处于相同的位置。

5.不完全类型

在被声明的时候还不知道其内容,所以无法确定大小,这样被叫做不完全类型。不能派生出数组、不能作为结构体成员、不能声明变量。

struct Man;//这种声明就是"不完全类型"

struct Woman{
    struct Man *husband;
};

struct Man{
   struct Woman *wife;
};

上面的例子中在Man被定义完内容以后,Man就不是不完全类型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值