【C语言进阶深度学习记录】一 数据类型的本质与变量的本质

今天学习C语言中的数据类型的本质与变量的本质

1 什么是数据类型

  • 数据类型可以理解为固定内存大小的别名
  • 数据类型是创建变量的模子

如同下面的图示,各个数据类型是代表了某一个固定大小的内存,数据类型是这块内存的别名。

然后,当我们要创建一个变量时,就使用上述的基本数据类型为模子,产生一个新的变量,如下图所示:

这些新的变量,是根据基本数据类型这个模子,来刻画变量所占用的内存空间的大小。

2 变量的本质

变量的本质是什么?

  • 变量是一段实际连续存储空间的别名,注意与基本数据类型的不同,基本数据类型是一段连续存储空间的别名,但是它不是任何一个实际的存储空间,它相当于一种规则。
  • 程序中通过变量来申请并命名存储空间,
  • 申请存储空间后,使用变量的名字可以使用该存储空间

如下图所示,即,i,j,k为普通的变量(在这里是int类型的变量),p也是一个变量,但是它是指针变量(指针后面会深度学习)

3 数据类型与变量的关系

  • 上面的学习中发现,变量可以看成是数据类型的一种具体化。变量所对应的数据类型,它们两个所占用存储空间的字节数是相等的。具体看下面的例子:

  • 1-1.c

#include <stdio.h>

int main()
{
    char c = 0;
    short s = 0;
    int i = 0;
    
    printf("%d, %d\n", sizeof(char), sizeof(c));
    printf("%d, %d\n", sizeof(short), sizeof(s));
    printf("%d, %d\n", sizeof(int), sizeof(i));
    
    return 0;
}

编译运行程序:

  • gcc 1-1.c
  • ./a.out

运行结果为:

4 自定义数据类型与创建变量

我们还可以自定义数据类型,然后使用自定义的数据类型来创建变量。如下代码:

1-2.c

#include <stdio.h>

typedef int INT32;
typedef unsigned char BYTE;
typedef struct _tag_ts
{
    BYTE b1;
    BYTE b2;
    short s;
    INT32 i;
} TS;

int main()
{
    INT32 i32;
    BYTE b;
    TS ts;
    
    printf("%d, %d\n", sizeof(INT32), sizeof(i32));
    printf("%d, %d\n", sizeof(BYTE), sizeof(b));
    printf("%d, %d\n", sizeof(TS), sizeof(ts));
    
    return 0;
}
  • 编译运行的结果为:

5 总结

  • 数据类型的本质是一个模子
  • 数据类型代表需要占用内存的大小
  • 变量的本质是一段内存的别名
  • 变量隶属于某一种数据类型
  • 变量所在的内存的大小取决于其所属的数据类型的大小
全部评论

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务