C++日常学习,指针的概念定义

学习C++的朋友,都不能绕过指针这个概念,不论是指针的定义或者指针的使用,都是一个容易造成学习内容混乱的一不分,所以今天主要是对指针进行一个本人的学习过程的分享,希望可以帮助理解并掌握指针的一个基本概念以及如何使用。

指针的定义:指针简单来说就是一个地址变量,这个变量里保存的是指向定义变量的地址。

平常我们定义的变量,例如一个int A=1,定义的一个整形的变量,它在定义的时候会开辟一块内存空间用来保存这个变量,并存储这个变量的值,而我们可以使用我们定义的变量名例如这里的A去直接访问这个A变量的值也就是1,这就是直接访问的一个过程。

但如果说我们定义一个指针,int *p,在定义这个指针的时候也会开辟一个内存空间来保存这个变量的值,但是对于内存地址也就是内存带有的编号,我们去访问内存地址,通过这个地址去找到想要的变量的值,非直接访问的过程也就是间接访问,指针存储了这个内存地址,提供的作用就是间接访问变量的值。

指针的定义及类型:

1.平常的定义类型:int 、short、long、float 、double、char,都可以用来定义指针。int *p也就是整型变量指针,指针也就是存放的地址中保存的变量的值是整型。类比的double型、float型等。

2.带返回值的函数指针和不带返回值的函数指针:指针指向的是一个函数,但是可以有返回值也可以没有返回值。void (*a)()就是指针存储指向一个无参数无返回值的函数的地址。

特殊符号的含义:对于在指针前加*代表的是解引用,目的是为了找到指针指向的内存中的数据也就是定义的变量的值,而&(变量),是对变量取地址,取的地址是一个内存单元的地址。

个人对于指针的理解可以表现为:指针可描述为,指针存的是密码箱的所在位置,*是密码箱的密码,通过位置找到了密码箱,用*密码解锁获得箱子里的数据。

一个简单的例子:

int a=1;

*point=&a;

qDebug() << *p << " " << p << " " <

输出为:

2 0x18cc1d991 2

3.指针占用内存:指针在32位操作系统下占用4个字节的内存,在64位操作系统下占用8个字节内存空间。

4.特别注意一个特别容易导致混乱的点:

也就是需要特别注意区分常量指针与指针常量

(1)常量指针:是指向常量的指针,注意这里修饰p的const是处在前面的,按照顺序读也就是常量+指针,常量指针也就是一个执行内容是常量,但是其本身还是指针变量,而指针所指向的内容是不可以改变的,但是可以更改指向的对象。以下为常量指针的定义:

const int *p = &x;

(2)指针常量:指针本身是一种常量,无法改变指针指向的对象,但是可以改变指向的变量的值,可以将指针常量比成日常我们定义的整型常量,指针固定的指向某一单元,指针常量的指向不可改而指向的值可以修改。

int *const p=&x;

对于常量指针与指针常量的个人的记忆方法:const是常量,*符号对应指针,这两个符号谁在前就怎么读,const 就是常量指针,*const就是指针常量,而对于这两个符号,谁在前谁就不可以修改,或者是const修饰谁,谁就不可以改变。

你可能感兴趣的:(开发语言,c++)