关于指针的基本概念网络上有很多,这里列的是一些细节,加深理解。为正在学习C/C++的人提供。
一、指针概念的核心:
指针 保存的是 另一个对象的地址。
string s("hello world");
string *p = &s;
指针 p 指向的是 string 类型的对象 s,即 指针 p 保存 s 的地址(瞎写:0xssss)。
*p 获取指针 p 指向的对象,即 *p 等于 s 的内容(hello world)。
二、几种情境:
1、二级指针
string s("hello world");
string *p = &s;
string **p2 = &p;
第三行可拆分为:
string **p2;
p2 = &p;
p2 == p 的地址(瞎写:0xpppp);
*p2 == p 的内容 == s 的地址(0xssss);
**p2 == *p 的内容 == s 的内容(hello world)。
2、双向链表里的指针:
struct ListNode {
int elem;
ListNode *prev, *next;
}
链表的一个节点包括:数据和指向下一个节点的指针。
*prev 是 ListNode 类型的指针,存放的内容是前一个节点的地址;
*next 是 ListNode 类型的指针,存放的内容是后一个节点的地址。
(未完待续,欢迎补充)