指针
指针的概念
每个变量在内存中存放都对应一段地址,其首字节即为变量的地址,将存放地址的变量称为指针变量。
int x=4;
x的地址为1001
&x的值为1001
*(&x)的值为4
其中:
-
&->取地址运算 。。。&x为x的值
-
*为取内容运算。。。
*(&x)为取存放在x的地址中的取内容
定义 :
*数据类型 标识符;
- 数据类型为指针所指向数据的类型
- “ * ”是一个标志指针变量的标志
初始化:
在定义指针变量的同时为其赋一个地址值
int a=5,*p=&a;
等价于 int a =5, *p; p=&a ;
这里面 *(&a)与 *p 都代表a的值,p代表的是指向变量a的指针变量。
赋值运算:
int a,*p,*p1,*p2;
- p=NULL; 不指向任何对象
- p=&a ; p指向a
- p1=&a ;p2=p1; 同类型的指针变量相互赋值;
- p = new int ; 为p动态分配存放一个整数空间
- p = new int [10]; 为p动态分配一个存放10个整数的空间
int a, *p; float f;
p=1000; 不能随意将一个整数值赋值给指针变量
p=&f; 类型不一致
加减整数
p+n(p-n):指向p后面的或前面的第n个元素
自加自减
p++(p–) 指向p后面或前面的一个元素
指针相减
两同类型的指针相减,结果为两个地址差之间能够存放的数据个数
【例】int *p1, *p2; -----设p1指向1000,p2指向1008
p1-p2=(1008-1000)/sizeof(int )=2
【注】
sizeof(int ):4
sizeo