(一)地址与指针的概念:
1.如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。编译系统根据程序定义的变量类型,分配一定长度的空间。例:整型变量2个字节,字符变量一个字节。
2.内存区的每一个字节有一个编号,这就是“地址”。相当于索引号,房间号,房间里面可以存放数据。
3.区分内存单元的地址与内存单元的内容
4.在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后已经将变量名转换为变量地址,对变量值的存取都是通过地址进行的。
5.按变量地址存取变量值的方式称为“直接访问”;将变量i的地址存放到另一个变量中,为“间接访问”。
6.C语言中,将地址形象化地称为“指针”。
7.一个变量的地址称为该变量的“指针”,如果有一个变量专门用来存放另一个变量的指针,则称为“指针变量”。区分指针和指针变量,指针是地址,指针变量是存放地址的变量。
(二)变量的指针和指向变量的指针变量
1.变量的指针,即变量的地址;指针变量,即地址变量
2.因为程序中,使用变量名的时候,实质是操作变量名指向的内容。定义指针变量:int *pointer_1 和int i是同一个意思,需要定义指针变量指向的变量的类型。
3.定义指针;基类型 *指针变量名 ,即指针变量名为地址,存的是头地址,基类型表示占用的字节数,*表示“指向”,“*地址”表示指向该地址的变量。
4.要指针变量指向一个变量,可以赋值语句:pointer_1 = &i; ,取变量的地址存入pointer_1.
5.定义指针变量注意两点:
(1)指针变量前面的“*”表示该变量的类型为指针型变量。指针变量名为pointer_1 ,而不是*pointer_1.
(2)在定义指针变量时必须指定基类型。因为每个字节都有一个地址,而指针变量存的是头地址,还要指定占用的字节数。
(3)只有整型变量的地址才能放到指向整型变量的指针变量中。即类型要保持一致,声明指针变量的时候,要指定该指针用来存放的是何种基类型的地址。
(三)指针变量的引用
1.有两个运算符:
(1)&:取地址运算符。
(2)*:指针运算符,(或称间接运算符),取其指向的内容。
例如&a为变量a的地址,*p为指针变量p所指向的存储单元的内容。