在C语言中,提供了char, int 这样的变量类型,可以定义一个变量,然后,在变量中存储数据。例如:

char x = 68;

就是定义了一个char类型的变量,变量的名称是x,在x这个变量中存放68这个数值。那么,这个变量类型、变量名和存储空间到底是怎么样的关系?

我们来讨论这样的一个例子:

(1) 在一栋居民楼中,有一房一厅的房间和两房一厅的房间;

(2) 一房一厅的房间,房门是501号房;两房一厅的房间,房门是601号房;

(3) 501号房是一房一厅,可以住1个人,居中人员是A;601号房是两房一厅,可以住2个人,居住人员是X,Y;

那么,就可以画出如下的图:

c语言变量地址存储在哪里(在内存中如何存储)(1)

可以看到:

(1) 一房一厅、两房一厅的房子,就是房子的类型;

(2) 房子类型的不同,决定了房子的空间不一样;一房一厅的房子,有一个房间,可以住1个人,两房一厅的房子,有2个房间,可以住2个人;

(3) 房号就代表一个房子,例如,501表示一个房子,有一房一厅的空间;601表示一个房子,有两房一厅的空间。

(4) 房子类型如同C语言中的变量类型,例如char, int类型;不同的房子类型有不同的空间,如同不同的变量类型,在内存中有不同的存储空间。char类型的变量有1个字节的存储空间,int类型的变量有4个字节的存储空间。

(5) 房子中居中的人员,如同变量中存储的变量值。

那么,通过“房子”这例子进行类比,下面定义2个变量:

char a = 68;

int b = 100;

这样的定义,在内存中存储数据的情况是:

c语言变量地址存储在哪里(在内存中如何存储)(2)

可以看到:

(1) 变量名,指向一个存储空间;如同房号,指向一个房间。

(2) 给变量赋值,就是把数据存放到变量指向的存储空间;

例如,有一个包租婆,把501号房租给人员A居住,那么,人员A就是居住在501号房指向的房子中。所以,int b = 100; 是把100这个数值赋给变量b,那么,就是把100这个数值存放到变量b名称指向的一块存储空间中。

(3)变量的存储空间,是由变量的类型决定。

例如,房子的空间,由房子的类型决定;一房一厅的房子,有1个房间;两房一厅的房子有2个房间。在C语言中定义了变量类型对应的存储空间。例如char类型的变量,有1个字节的存储空间;int类型的变量,有4个字节的存储空间。

,