今晚重新看了一下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
下载地址: