含义:指向另外一种数据类型的复合类型。
大小:64位系统中,指针占8个字节
用法:
- 指向普通对象的指针:
#include <iostream>
using namespace std;
class A {
};
int main() {
A *p_a = new A();
return 0;
}
- 指向常量对象的指针
#include <iostream>
using namespace std;
int main() {
const int a = 10;
const int *p_a = &a;
cout << *p_a << endl;
return 0;
}
- 指向函数的指针
#include <iostream>
using namespace std;
int add(int a, int b) {
return a+b;
}
int main() {
int (*p_fun)(int, int);
p_fun = add;
cout << p_fun(1, 2) << endl;
return 0;
}
- 指向对象成员变量、成员函数的指针
#include <iostream>
using namespace std;
class A {
public:
int a;
int b;
int add() { return a + b; }
};
int main() {
A ex;
ex.a = 10;
ex.b = 20;
int* p_a = &ex.a;
int (A::*p_fun)();
p_fun = &A::add;
cout << *p_a << endl;
cout << (ex.*p_fun)() << endl;
return 0;
}
- this指针(指向类的当前对象的指针常量)
#include <iostream>
#include <cstring>
using namespace std;
class B {
private:
int age;
int sex;
string name;
public:
void set_name(string name) {this->name = name;}
void set_age(int age) {this->age = age;}
void set_sex(int sex) {this->sex = sex;}
void show() {
cout << "name:" << this->name << endl;
cout << "age:" << this->age << endl;
cout << "sex:" << this->sex << endl;
}
};
int main() {
B b;
b.set_name("Jane");
b.set_age(26);
b.set_sex(0);
b.show();
return 0;
}