[C++]指针学习总结
今晚重新看了一下C++的指针,总结如下:
有关数据类型的定义:
int i;//int类型变量
int *p;//指向int类型的指针变量
int a[n];//int型数组
int *p[n];//指针数组
int (*p)[n];//指向int型数组的指针
int func();//返回值类型为int的函数
int* func();//返回值为 指向int类型的指针变量 的函数
int (*p)();//指向返回值类型为int的函数
int **p;//指向指针的指针
对于指针类型p,p表示它所指向数据的地址,*p表示它所指向数据的值,&*p等价于p
对于普通类型i,i表示它的值,&i表示它在内存中的地址,*&i等价于i
指针的运算:
1.指针变量可以加/减一个整数
p+i 表示 p+i*d (d表示p所指向的变量单元所占字节数)
2.指针变量赋值
p=&a;//普通类型
p=array;//数组类型
p=&array[&];//数组的值
p=max;//函数名
p1=p2;//指针
3.指针可以有空值,表示指针不指向任何变量
p=NULL 等价与 p=0 (因为系统已经定义#define NULL 0)
注意p=0与p未赋值是不同的,未赋值表示p指向一个未知的单元
4.指针可以相减(如数组计算下标差),但不能相加(相加无意义)
5.指针可以比较,指向前面的元素的指针小于指向后面的元素的指针
6.不同类型的指针赋值需要强制转换类型
p1=(int *)p2;
p1=(char *)p2;
p1=(double *)p2;
附件:
CppPointerExample.7z
下载地址:
http://pan.baidu.com/share/link?shareid=135850&uk=3238766853