指针
一、地址和指针的概念
在程序中定义一个变量,在编译时就会给这个变量分配一个内存单元,同时根据变量的类型决定这个内存单元的大小。
内存中每一个字节都有一个编号,就是地址
对每一个变量,它在内存中都有一个存储位置,这个位置就是该变量的地址,对变量值的存取是通过地址进行的。
在C语言中,这个地址被形象化地称为“指针”
指针:一个变量的地址
指针变量:存放另一变量地址的变量(即指针)
二、变量的指针和指向变量的指针变量
1、定义一个指针变量
指针变量在使用前必须定义,使其指向特定类型的变量,指针变量存放地址,必须定义为“指针类型”
定义的一般形式:基类型 *指针变量名
基类型:用来指定指针变量可以指向的变量的类型。
将决定指针移动和运算时的移动量
构成:[存储类型] 数据类型
*:表示该变量为指针类型
注意:
(1)int *p1,*p2;与int *p1,p2;的区别
(2)指针变量名为p1,p2,不是*p1,*p2;
(3)指针变量只能指向定义时所规定类型的变量
(4)指针变量定义后,变量值不确定,应用前必须先赋值
2、进一步理解&与*运算
&:取地址符
含义:取变量的地址
单目运算符
优先级:2
结合性:自右向左
*:指针运算符(“间接访问运算符”)
含义:去指针所指向变量的内容
单目运算符
优先级:2
结合性:自右向左
两者的关系:互为逆运算
3、指针变量的初始化
一般形式:[存储类型] 数据类型 *指针名 = 初始化地址值
eg:int i;
int *p = &i;
三、数组与指针
数组的指针:指数组的起始地址
数组元素的指针:指数组元素的地址
数组的地址-->指针变量,指针变量就指向该数组
引用数组元素
下标法:a[2]
指针法:用指针变量指向所找的数组元素。占内存上,运行速度快