1.地址和指针的概念
- (1)变量的内容和变量的地址
程序运行期间,程序代码、常量、变量、数组等都存放在内存中
内存单元中存储的数据就是变量的内容或变量的值
计算机的内存是连续的存储空间
为了对内存中指定的部分进行操作,系统对内存进行了编址
内存编址是连续的,基本单位是字节
编译时系统给每个变量按类型分配一定长度的内存单元
Turbo C编译系统为整型变量分配2字节、为实型变量分配4字节、为双精度型分配8字节
分配给每个变量的内存单元的起始地址时该变量的地址
编译后,每一个变量名对应一个变量地址
引用一个变量,就是从该变量名对应的地址开始的若干内存单元中取出数据
给变量赋值,就是将数据按该变量的类型存入对应的内存单元中 - (2)直接访问和间接访问
直接用变量名从对应的地址存取变量的值叫做直接访问
还可以将变量的地址存放在另一个变量当中,访问的时候先从另一个变量中取出变量的地址
然后再按该地址存取变量的值
这种通过另一个变量名访问的方式叫做间接访问
C语言规定用指针类型的变量来存放地址,通过指针类型的变量可以实现间接访问 - (3)指针的概念
在间接访问中通过另一变量中存储的地址能够找到所需要的变量
可以认为该地址指向目标变量
C语言形象的把地址称为指针
变量的指针就是变量的地址
指针类型就是地址类型
存放指针的变量是指针类型的变量(简称指针变量)
地址不是一个简单的数字,它包含存储位置和该位置是存储哪种数据类型的数据两个概念
定义指针变量的时候,必须指明它所存储的指向变量的类型