一、常量、变量、地址、数据类型深入

一、地址空间的分类

程序运行需要将程序加载到一个地址空间里,根据地址空间是否可写,将地址空间分为两种,一种是可写的,我们将这种地址空间称为可读可写的;还有一种不能写,只能读,将这个地址空间称为只读的地址空间。

二、量的分类(分类规则依赖于地址空间的分类)

程序中有两种量,常量和变量。不管是常量还是变量,都有自己的地址空间常量的地址空间里的值不能改变,也就是只读的,但变量地址空间里的值是可以改变的,也就是可读可写的。

三、常量和变量的三要素


常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值、枚举常量。常量的值在定义后不能进行修改。
C中定义一个变量的时候,必须指定变量的数据类型。什么是数据类型?接下来会讲到。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,C语言中大小写敏感


每个变量都有自己的名字、地址编号、和值。这是变量的三要素。

上图中va是变量的名字,200是变量的值,f0fff0000是变量的地址, int是变量的数据类型。到这里,数据类型、地址编号,都懵了。稍等片刻,慢慢解开。程序中如何访问变量的内容呢?首先,通过变量的名字找到变量的地址,然后,根据变量的数据类型,访问变量地址里的内容。这句话标红,那是因为他重要的不得了。


四、地址编号


那么接下来,我们解释地址编号。


地址编号分为两种。一种是物理地址编号,这些主要用在没有操作系统的开发方面。这些地址编号是由机器的生产商已经确定好了的。一种是虚拟地址编号,虚拟就是假的,不存在的。在操作系统层面的开发,使用的都是虚拟地址编号,这些编号是操作系统通过管理底层的物理器件,向程序员提供的一个地址编号,是由操作系统的存储管理子系统完成的,目前大家不必去纠缠是如何形成的,如果感兴趣,可以在系统编程中为大家讲解。目前我们拿32位机给大家讲解地址编号。32位机中,有32根地址线,每根地址线可以取值0或者1。所以,我们就可以有0~4G-1,共4G个地址编号。这些地址编号是线性的、连续的。一个地址编号对应一个字节。也就是说,每个字节都有自己的地址编号。

五、数据类型

在提及到数据类型概念的时候,都是char、short、int、 float、 doulble.. 这样讲解没有问题。这些都是不同的、具体的数据类型。

每个字节都有自己的地址编号,那找到这个地址编号的时候,我是从这个地址编号里一次访问一个字节呢、两个字节呢、还是四个字节呢?这些操作需要做出一个规定,我称之为访问地址空间里数据的方式。比如(开辟)访问1个字节的称为char,2个字节的称为short, 4个字节的称之为int。ok, 这就是数据类型。但除此之外,还有跟char、short、int类型相关的操作。所以,数据类型就是访问地址内容的规则和跟这种类型相关的操作。如果是多个字节的话,那么我们又如何将多个字节编组成我们想要的数据呢?这里涉及到另一个话题,大端和小端。后边详述。


C语言的数据类型分为两种,一种是系统提供的,我称之为原生态的。如char、short、int、float、 double、void、 *类型。另外一种是用户使用原生态的数据类型自定义的数据类型。比如:指针、数组、函数、结构体、枚举、联合 ,搭积木一样。

头脑里画出一个xmind图帮助理解

六、变量的定义和使用

由上述的讲解,现在可以告诉大家如何定义和使用一个变量了。
变量定义的格式如下

数据类型变量的名;
数据类型变量的名=指定变量的初值;
数据类型变量名1, 变量名2, ..
数据类型变量名1=指定变量的初值, 变量名2=指定变量的初值,...

注解
(1)变量命名规则,数字、字母、下划线组成,不能以数字打头。
(2)变量名最好见名知意,尽量不要使用全拼命名变量,给人的感觉太low。

 案例

#include<stdio.h>
int main(){
    char vc = 'm';
    printf("vc=%c\n",vc);
    printf("&vc=%p\n",&vc);
    return 0;
}

给张图自己理解理解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值