1、指针的声明
TypeName *name;
2、指针的赋值
一般变量:
int * p1 = &a;
数组:
int *p2 = arr[30];
p2指向arr数组中第一个元素;
申请内存:
int *p3 = new int;
3、解除引用
对指针解除引用意味着获取指针指向的值,即使用*来解除引用。(就是读取指针指向的值!!!!!)
4、指针的运算
指针可以进行运算,指针加1相当于在原来的地址上加上指向对象占用的总字节数。
指针与指针做差当且仅当两指针指向同一个数组时有意义,结果为两元素之间的间隔。
5、动态数组
使用new创建数组,delete释放空间,例:
int size; cin>>size; int *pz = new int [size]; ... delete []pz;
6、数组表示法与指针表示法
使用方括号数组表示法等同于対指针解除引用:
arr[i] = *(arr+i)
arr+i = &arr[i]
7、数组结构指针组合
结构:
struct antarctica_years_end
{
int year;
}
创建这种类型的变量:
antarctica_years_end s1,s2,s3;
访问成员:
s1.year=2018;
创建指向结构的指针:
antarctica_years_end *pa = &s1;
使用间接成员与算符来访问:
pa->year = 2018;
创建指针数组:
const antarctica_year_end *arr={&s1,&s2,&s3};
创建一个指向上述数组的指针:
const antarctica_year_end **ppa=arr;
其中arr是一个数组的名称,因此他是第一个元素的地址。
但其第一个元素为指针,因此ppa是一个指针,指向一个指向const antarctica_year_end的指针。
由于ppa是一个指向结构指针的指针,因此*ppa是一个结构指针,可使用它来访问人成员:
(*ppa)->year
以上!!