C语言中基本数据类型

--事物的难度远远低于对事物的恐惧!  

    好了,昨天把博客目录框架已经搭建好了,今天开始不定期更新各章节内容,坚持就是胜利!

    今天来聊聊C语言中的基本数据类型,学过一点C的朋友就肯定知道,C语言中的基本数据类型就是int、char、float、double等这些标识符,使用也很简单,直接int value = 10,这样就定义了一个值为10的int型value变量。

一、那么让我们来思考一下:int、char、float、double这些基本数据类型到底是什么东西?相信很多人没想过这个问题。现在来揭晓答案,可以从下边两点来理解基本数据类型:

            1、数据类型可理解为固定内存大小的别名

            2、数据类型是创建变量的模型

下边来分析这两点:

    1、固定内存大小的别名,注意"固定大小"四个字,当我们在程序中定义 int value1 = 10 时,你就知道value1在内存中占了4字节,char value2 = 1,value2在内存中占了1一个字节,float与double以此类推。那么有人会问,为什么int占四个字节、char占一个字节等,在C语言诞生之前,汇编时期写代码操作内存,当程序员需要4个字节的内存大小,那么就会按照内存地址,比方0X11223300,以0X11223300为起始地址,数四个字节,得到0X11223304;下次再需要4个字节,又重新由一个起始地址数四个字节,数的"不亦乐乎"。后来C语言诞生,由于程序中常用的基本内存大小为1、2、4、8这几个字节,于是乎前辈大佬们就给这几个固定大小的内存披了件衣服,char=1个字节,short=2个字节,int=4个字节,float=4个字节,double=8个字节,于是问题就变得很愉快了,当我们需要四个字节的内存,直接int value = 10,就在内存中捞到4个字节,顺便给这4个字节取个名字value,后续操作变量value就等价于直接操作捞到的那4个字节,char、float、double也一样,只是捞到的内存大小不一样罢了(可参考下图)。

    2、现在回过头来看看第2点的描述:创建变量的模型,现在应该很清晰了吧,每次我们需要在内存中获取4个字节,就直接拿int这个模型往内存中一捞,于是4个字节的内存就到手了,但是别忘了给你捞到的内存取个名字,要不后边怎么取操作这段内存呢?

再来举个例子,蛋糕店里做蛋糕用的模具,就很类似我们这里所说的C语言中的数据类型,做小蛋糕,就用小模具,大蛋糕就用大模具,只要把模具往原料中一捞!就得到一个"蛋糕",然后注明为张三的蛋糕、王五的蛋糕,这里也是一样的,只要我们把基本数据类型往内存中一捞,就得到一片内存,然后给内存取个名就OK。

二、经过上述的描述,相信大家对基本数据类型是什么已经有了比较清晰的理解了,那么请回想刚才第二点的描述:创建变量的模型,这里所说的变量又是什么东东?客观别急,且让我慢慢道来。。

    细心的朋友已经发现了,上边写道:用int这个模型去内存里捞,int value = 10,捞到4个字节后,给这四个字节取个名字。答案就在这里!value就是这四个字节的名字,而value,就是我们程序中定义且操作的变量!后续对这个变量的操作,就是对这片内存操作!

简而言之,变量就是一段连续内存空间的的别名,注意是连续的内存空间,理解也简单,拿模型去捞,捞到的肯定是一块连续的内存空间。(可参考下图)变量i就是内存3000-3004这段连续内存的别名,这段内存中的存储的内容为2。

 

    上边都是些理论,下边让我们用代码来验证一下

#include <stdio.h>

int main()
{
	char c = 1;    //模型为char,大小为1字节;  变量为c,对应模型捞出的内存大小为1字节
	int i = 2;     //模型为int,大小为4字节;  变量为i,对应模型捞出的内存大小为4字节
	double d = 3;  //模型为double,大小为8字节;  变量为d,对应模型捞出的内存大小为8字节
	printf("%d , %d\n", sizeof(char), sizeof(c));
	printf("%d , %d\n", sizeof(int), sizeof(i));
	printf("%d , %d\n", sizeof(double), sizeof(d));

	return 0;
}

输出如下:可见模型大小与模型在内存中捞出的连续内存空间,大小是一致的。

 

总结:

1、数据类型的本质是一个固定大小的模型

2、数据类型代表需要占用的内存大小

3、变量的本质是一段内存的别名

4、变量隶属于某种数据类型(模型)

5、变量所占的内存大小取决于其所属的数据类型

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值