指针和指针变量的区别
内存地址是内存单元的编号 ,指针就是地址,地址就是指针,指针变量就是存放地址的变量,也可以说,指针变量就是存放指针的变量,例如: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了指针,那么指针指向的地址是不能变的,但是你可以改变其中的内容。