指针
相关概念
- 指针基本概念:计算机中的数据是放在存储器中的,存储器中的一个字节称为一个内存单元,每个内存单元都有相应的编号,可以由编号找到相应的内存单元。内存单元的编号叫做地址,也把其称为指针。
- 指针变量:在c语言中允许用一个变量来存放指针,这种变量称为指针变量。一个指针变量的值就是某个内存单元的地址,或称为某个内存单元的指针。
指针变量的定义与初始化
指针变量使用前必须定义,定义时应该指明变量的类型名和变量名。
- 指针变量的定义:类型说明符 *变量名;
(说明 *表示这是一个指针变量)
例int *p1;/*定义一个指向整形变量的指针*\
(指针变量只能指向相同类型的变量,如p1只能指向int类型的变量,而不能指向浮点型) - 操作符 &:&是取地址符,是一元操作符只能返回一个操作数,返回的是地址。
- 操作符*:*是间接引用运算符,也称为复引用运算符,是一元操作符,返回操作数所值的变量的值。
(注意:*在不同的场合的作用是不同的,若出现在定义变量中,*说明p是指针若出现在引用中如int a=1;b,*p;p=&a ;b=*p;b=*p; *p=1,p就是间接访问p所指的对象,即p就是p所指的变量a )
(指针变量在使用前必须赋予具体的值,为赋值不能使用)
指针运算
- 指针的赋值运算:
//1.将变量的地址赋值给指针变量
int a,*p;//此时p没有指向具体的整型变量,可以将a的地址赋给p
p=&a;
//2.将已经被赋值的指针复制给另外一个指针
int *p1,*p2,a=1,b=2;
p1=&a,p2=&b;
p1=p2;
//给指针变量赋予空值
//p=0或p=NULL或p=‘0’ 此时指针p不指向任何变量是空值,且指针除了可以被赋值常量0外不能赋值其他常量,如p=10的表述方法是错误的。
- 指针的算数运算:
指针可以进行加减,但这并不是一个简单的数值加减,而是指针的移动。
例如,int a=1,b=2,c=3,*p; p=&a; p=p+2; //表示的是指针向下移动两个整型变量的位置
p-> |1| 运算后|1|
-----|2|----------|2|
---- |3|------p->|3|