在程序中声明变量后,编译器会为变量分配相应的内存单元。换句话说,每个变量在内存中都有一个固定的位置和一个特定的地址。由于变量的数据类型不同,其占用的存储单元数量也不同。一些变量和数组声明如下。
int i = 18//声明整数变量I并赋值。
char c双d = 1.414213//声明双精度浮点变量D并赋值。 = { 89,90,91,92,93 };//声明字符数组C并初始化它。
浮点f = 12.89//声明一个单精度浮点变量f并赋值。
[5]
编译程序时,编译器会确定这些变量和数组所需的存储空长度。当程序运行时,操作系统为这些变量和数组分配内存单元。整形变量占用的内存是2字节,长度为5的字符数组占用的内存是5字节,单精度浮点变量占用的内存是4字节,双精度浮点变量占用的内存是8字节。由于计算机内存的最小寻址单位是字节,假设变量的存储从内存单元3000开始,操作系统为这些变量和数组分配内存单元,如下图所示:
二维数组在内存中存放的位置示意图二维数组在内存中的存储位置示意图
变量根据不同的数据类型占用不同大小的内存,每个变量都有一个特定的内存单元地址。比如变量I在内存中的地址是3000。占用2个字节后,数组C的第一个内存地址是3002,变量F的内存地址是3008。对内存中变量的访问曾经是“scanf (“%d “,&;a)”表达式将数据输入到由变量地址指示的存储单元中。那么,要访问一个变量,首先要找到它的内存的地址,或者说一个地址只指向一个内存变量,把这个地址叫做变量的指针。如果变量的地址存储在内存的特定区域,那么变量就用来存储这些地址。这样的变量就是指针变量,通过指针访问被指向的变量也是对变量的间接访问。
假设一组指针变量pi,pc,pf,pd分别指向上述变量或数组I,c[],F,D,指针变量也存放在内存中。它们之间的关系如下图所示。指针变量的memory 空中存储的数据就是对应变量或数组的内存地址,通过这个地址可以访问对应的变量或数组。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。