集美大学 计算机 郑如滨

教学博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

基本原则:指针类型变量存储的就是地址!
1.数组名就是数组首元素的地址

        int age[3];
        int* p = age; // age中存储了一个长度为3个int数组的首地址

2.使用new操作符实际上是向操作系统申请一块内存(包含类型信息),返回的就是该块内存的地址。我们要引用他,就要指针指向这段内存的地址。

int* p1 = new int(10); // 该int的值为10,p1存储了这个int值得地址
Student* p3 = new Student; // 其中Student是结构体,p3存储了新建得这个Student结构体得地址

3.->操作符,专门用于操作指针指向对象(结构体,对象)的成员
p3->age = 13;

4.&操作符,专门用于取地址

Student s1; // Student是结构体
s1.name = "123"; 
s1.age = 13;
Student* p4 = &s1; // 取s1这个结构得地址赋值给p4指针。现在p4和s1都可以操作s1这个结构体

5.*操作符,可以操作指针指向的地址

(*p3).age = 13; // 等同于p3->age = 13;
int sum = 0;
int* p5 = ∑ // p5存储了sum变量的地址,操作p5就是操作sum
*p5 = 1;        // 这时候sum为1
cout << *p5;

总之:
当你看到了指针,你就要想到地址,就要想到*,想到取地址操作符&,想到->。另外,指针是有类型的。注意:C++中的引用类型参数(&)和取地址操作符&是不一样的。

6.函数指针:使用前面的原则来理解,函数指针是一个什么样的存在呢?

int add(int x, int y)
{
    return x + y;
}
int(*addptr)(int, int);
addptr = add;
cout << (*addptr)(10, 20) << endl; //提问:这里为什么要用`*`
posted on 2019-03-05 10:42  zhrb  阅读(437)  评论(0编辑  收藏  举报