指针和指针变量的区别

        内存地址是内存单元的编号 ,指针就是地址,地址就是指针,指针变量就是存放地址的变量,也可以说,指针变量就是存放指针的变量,例如:int *p中p就是指针变量。需要注意:通常我们叙述时,会把指针变量简称为指针,实际上它们的含义并不一样


指针功能

        避免副本和共享数据。指针的重要功能是函数之间传递参数

        区分就是看  * 和const 谁离指针变量名 p近,如果是  * 离的近,表示该指针指向一个常量。反过来如果是 const离的近,则代表是一个常指针。

        操作系统的位数决定指针寻址的大小,在64位编译器下,编译出来的程序,指针占用8个字节,32位编译器只占用4个字节


指针常量和常量指针

提供一个思路:读这种声明的时候从右往左读

如:

1、const char *ptr

ptr 是一个 指向 const char 的指针

2、char const *ptr

ptr 是一个 指向 char const 的指针

3、char *const ptr

ptr 是一个 指向char 的常量指针

第一类:const char *ptr 和char const *ptr

你可以认为这两种声明的功能是一样的。你都不可以修改它指向的内容,但是你可以改变其指向的内容,换句话说你可以重新赋值ptr。

第二类:char *const ptr

从右往左读:ptr是指向一个char型的const指针。意味着你const了指针,那么指针指向的地址是不能变的,但是你可以改变其中的内容。