数据类型详解

本文详细介绍了数据类型的作用及表示方式,包括基础数据类型和自定义数据类型,并对比了typedef与define的区别。此外,还解释了变量的生命周期与作用域等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型最大的作用是帮我们规定好数据的大小,而不是里面所存放的内容。各个数据类型所规定出的大小可以用操作符sizeof求出。

数据类型后的变量名的本质是它内存地址的别名。

数据类型的表示方式有两种。一种是我们常用的基础数据类型。如int,char等等。还有一种是我们自定义的数据类型,typedef和struct。关于typedef,它是来给我们的数据类型绑定一个别称,如
typedef unsigned long size_t; 即可以用size_t来取代unsigned long这样可以是我们写出来的代码可读性更强。更加容易让我们理解程序的语义

与define在语法上面的不同:typedef应该将我们使用的别名放在基础类型的后面。
与define在使用上面的不同:
`#define PDINT int*
typedef int* PTINT;

int main()
{
PDINT p1, p2;
PTINT p3, p4;

return 0;

}`
此段代码分别用define和typedef定义的一个int*的指针别名。由于define只是简单的替换。所以可以将PDINT换为int* 这样main函数中的第一句就是
int* p1,p2;
可以看出p1为一个int型的指针变量,而p2只是一个int型的变量。
而typedef则不同,p3,p4均为指针变量。

关于struct的使用,请参考struct与union

数据类型的使用方式:类型名+变量名。此时编译器就会取下一块指定大小的内存空间来存放里面的数据

在我们使用的数据类型里面都会有各自的属性。编译器默认的局部变量分配的方式为auto。它在栈区分配空间,全局变量无法使用。所以说我们平时定义的局部变量前面默认是加上auto的。如auto int index;

static:存储在程序的静态区,它只会被初始化一次。
当它修饰全局变量时,会将作用域限制在当前文件中,外部文件不可访问。
当它修饰局部变量时,它的生命周期和全局变量是一样的,但是作用域只在当前的大括弧({})中

register:存储在寄存器中,用它声明的变量必须是单个寄存器所能接受的值,也就是最大位一个int的大小。而且我们无法取到它的地址,因为分配在寄存器中没有地址。使用此关键字仅仅只是发出请求,能不能分配成功由我们的编译器来决定。而且全局变量无法使用。

生命周期与作用域:
生命周期即为此变量内存地址存在的时间,比如存放在栈中的局部变量在这个函数结束时,它的生命周期也就结束了。
作用域简单理解为存在于两个大括弧之间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值