关于指针的小结

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 

以上!!

猜你喜欢

转载自www.cnblogs.com/xiaoyuhehe/p/10002275.html