C++

常量指针与指针常量分辨

"welcome to ARTAvrilLavigne Blog"

Posted by ARTAvrilLavigne on September 1, 2016

常量指针与指针常量分辨

首先说明指针变量基本知识:
指针变量:
  指针变量是指存放地址的变量。因地址的改变而做出指定性质的衡量变法。存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。假设在程序中声明了1个int型的变量a,其值为68。系统为变量a分配的首地址为0X65FDF4H,pa是存放变量a地址的指针变量,即pa中存放的值为0x065FDF4H
  *p是所指向的数据内容,如下图中 1, 2, 3.4……
  p是所存放数据内容的地址,如下图中 2000,2002,2004…….
  &p是指针变量本身的地址,如下图中 1000,1002,1004……

Image text

  指针初始化时*p=&a 和p=&a的分辨:(二者是等价的,只是指针类型不同,第一个二维指针**p,第二个一维指针*p)

  *p=&a;//即p为一个指针的指针,定义p的时候应该是这样的,int **p; **p的值即为a
**p指针是个2维指针,是指向了另一个指针的地址后再让那个指针指向a的地址
  p=&a;//即p为一个指针,p的值为a的地址,*p的值即为a

  * (指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。

  常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
p1 = &a是正确的,但 *p1 = a 是错误的
  指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。
p2= &a是错误的,而*p2 = a 是正确的

Image text


みなさんのごおうえんをおねがいします~~