指针的原则
指针是C++是从C中继承过来的重要数据类型,它提供了一种较为直接的地址操作手段。正确的使用指针,可以灵活方便而有效的组织和表示复杂的数据结构。动态内存分配和管理也离不开指针。
具有静态生存期的变量在程序开始运行之前就已经被分配了内存空间。具有动态生存期的变量,是在程序运行时遇到变量声明语句时被分配内存空间的。
指针也是一种数据类型,具有指针类型的变量称为指针变量。指针变量是用来存放内存单元地址的。
声明指针的语法形式:
数据类型 *标识符;
其中“*”表示这里声明的是一个指针类型的变量。数据类型可以是任意类型,指的是指针所指向的对象的类型。
指针的赋值:
(1) 在定义指针的同时进行初始化赋值。语法形式为:
存储类型 数据类型 *指针名=初始地址;
(2) 在定义之后,单独使用赋值语句。赋值语句的语法形式为:
指针名=地址;
如果使用对象地址作为指针的初值,或在赋值语句中将对象地址赋给指针变量,该对像必须在赋值之前就声明过,而且这个对象的类型应该和指针类型一致。也可以使用一个已经赋值的指针去初始化另一个指针,这就是说,可以使多个指针指向同一变量。
数组名称实际上就是一个不能被赋值的指针,即指针常量。
指针的类型:
(1) 可以声明指向常量的指针,此时不能通过指针来改变所指对象的值,但指针本身可以改变可以指向另外的对象。
(2) 可以声明指针类型的常量,这时指针本身的值不能被改变。
指针可以和整数进行加减算法,但是运算规则比较特殊。
不同类型的指针之间或指针与非0整数之间的关系运算是毫无意义的。但是指针变量可以和整数0进行比较,0专用于表示空指针,也就是一个不指向任何有效地址的指针。
如果一个数组的每个元素都是指针变量,这个数组就是指针数组。指针数组的每一个元素都必须是统一类型的指针。
通过形参只针对数据值的改变也同样影响着实参指针所指向的数据值。
当一个函数的返回值是指针类型时,这个函数就是指针型函数。
函数指针就是专门用来存放函数代码首地址的变量。一旦函数指针指向了某个函数,它与函数名便具有同样的作用。
对象指针就是用于存放对象地址的变量。
this指针是一个隐含与每一个类的非静态成员函数的特殊指针,他用于指向正在被成员函数操纵的对象。
以上是我对指针的总结。