1.用指针作为函数参数
void sun(int *time,float *long)
2.指针型函数
数据类型 *函数名(参数列表) 例: int *func(void)
{ { }
函数体
}
返回的类型是指针类型
3.指向函数的指针
数据类型 (*函数指针名)(形参表)//声明类型为 数据类型的函数
赋值语句: 函数指针名=函数名
4.对象指针:
类名 *对象指针名 A *m; A a; m=&a;
调用对象a的成员 方法 1、a.成员名 2、m->成员名
5.this 指针
它是一个隐含于每一个类的非静态成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象, 也就是*this的值随的对象的变化而变化
在后置单目运算符++或--重载(operator)运用
例如:
#include<iostream>
using namespace std;
class A{
int x; //c++中默认x为私有类型
public:
A(int i):x(i){} //构造函数
void print(); //输出函数
A &operator++(); //重载前置运算符++ 如;有一个对象a ,进行++a(3);
A operator++(int); //重载后置运算符++ 如;有一个对象a ,进行a(3)++;
};
A &A::operator++()
{ x++;
return *this;
}
A A::operator++(int)
{ A b=*this;//创建一个临时的A类的对象b,用来存放初始的对象 如:a(3)++;将a(3)未自增时的内容赋给对象b,此时的 *this为a(3)
++(*this); //经过此语句后,*this 为 a(3)++; 通俗的将就是 a(3)自增后的内容就是 *this的值
return b; //这返回的是b,也就是a(3)未自增是的值
}
void A::print(){ cout<<"此刻的对象数据成员x的值为"<<x<<endl; }
int main()
{
A a(3);
a.print();
(a++).print();
a.print();
(++a).print();
a.print();
return 0;
}
运行结果如下:
6.指向类的非静态成员的指针
类型说明符 类名::*指针名 指向数据成员的指针
赋值语法 指针名=&类名::数据成员
访问数据成员 对象名.*类成员指针名
类型说明符 (类名::*指针名)(参数表) 指向函数成员的指针
赋值语法 指针名=&类名::函数成员
访问函数成员 (对象名.*类成员指针名)(参数表)