const int -p表明,const int是常量还是变量

  const int *p表明,const int是常量还是变量

  对于指针和常量,以下三种形式都是正确的:

  const char * myPtr=char _ A;//指向常数的指针

  char * const myPtr=char _ A;//指向常数的指针

  const char * const myPtr=char _ A;//指向常量的常量指针

  下面依次介绍三种类型。

  因为*运算符是左运算符,所以左运算符的优先级是从右向左的。为

  1.常量指针(常量指针)

  int * const p

  再看*之前的const,不过P是常量指针。你不能修改指针的指向,但是存储在这个指针指向的地址的值可以被修改。

  查看代码

  #包括iostream

  #包含stdlib.h

  使用命名空间std

  void main()

  int i1=30

  int i2=40

  Int * const pi=//这里的pi指针常量。

  //pi=//这里注意pi不能这样重新赋值,也就是不能指向另一个新地址。所以我给它做了注解。

  printf(%dn ,* pi);//输出是30

  i1=80//5.想想看:*这里可以用pi=80来代替?可以,这里可以通过*pi修改i1的值。

  printf(%dn ,* pi);//输出是80

  系统(“暂停”);

  }

  查看代码

  char char _ A= A

  char char _ B= B

  char * const myPtr=char _ A;

  myPtr=char _ B;//错误-无法更改myPtr的地址

  2.指向常数的指针(指向常数的指针)

  常数int *p

  先看const然后,定义一个指向常量的指针,这个指针指向的值不能被指针修改。

  查看代码

  #包括iostream

  #包含stdlib.h

  使用命名空间std

  void main()

  int i1=30

  int i2=40

  const int * pi=i1

  printf(%dn ,* pi);//输出是30

  Pi=//注意,这里Pi可以随时重新分配一个新的内存地址。

  i2=80//想想看:*这里可以用pi=80来代替?当然不是。

  printf(%dn ,* pi);//输出是80

  系统(“暂停”);

  }

  char char _ A= A

  const char * myPtr=char _ A;

  * myPtr= J//错误-无法更改*myPtr的值

  所以指针p指向的整数是一个常数,它的值是不可修改的。

  3.指向常量的常量指针

  对于“const指针指向常量”,需要同时满足上述1和2的内容,指针的值和指针所指向的值都不能修改。

  4.引入字符数组和字符指针。

  字符和字符指针的定义如下:

  char a[]=我爱你!;//定义了字符数组

  “我爱你!”;//定义了字符指针

  a可以理解为const指针,p则是指向常量的指针。代码示例如下:

  查看代码

  #包括iostream

  #包含stdlib.h

  使用命名空间std

  void main()

  char a[]=我爱你!;//定义了一个字符数组。数组名A是一个const指针,指向的位置是一样的,是数组第一个元素的位置。

  “我爱你!”;//定义了一个字符指针,指针p指向一个字符串常量,不可修改。

  //*(P1)= a ;//错误,不能修改指针指向的值,所以在这里注释掉。

  a[1]= a ;//const指针,不能修改指针的值,但是可以修改指针所指向的值。

  //a=p;//错误,A是常量指针,不能修改它的值。

  cout a endl

  cout p endl

  cout a[1]endl;

  cout *(p2)endl;

  系统(“暂停”);

  }

  输出值为:

  我爱你!

  我爱你!

  a

  L

const int -p表明,const int是常量还是变量