C/C++语言中的指针
这几天在接触一些C语言的项目,发现自己对C语言,包括C++的知识理解不透彻,尤其是指针。导致项目完全看不懂。因此这一篇就来补补C/C++中指针的知识。
参考书籍《C++ Primer》
指针
简单比喻
什么是指针,假如你住5楼503号房间。那么有一张纸条,纸条上写着5楼503。那么,我们就说这张纸条就是指向你房间的一个指针。
定义
指针(Pointer)是指向(Point to)另外一种类型的复合类型。
指针有两个特点:
- 本身是一个对象,允许对指针进行赋值和拷贝,而且在指针的生命周期内可以先后指向几个不同的对象。
- 无须在定义时赋初始值
一个简单例子
1 | #include <stdio.h> |
输出
1 | p是一个指针,P为0x7ffe09031b1c |
在这个例子中,我们用 int *p
来定义指针,这时候p
是一个指针。&ival
的意思是取int
型变量ival
的地址。
而在输出的时候,*p
是指针指向的变量,也就是说,*
号在这里成了解引用符号。仅在指针确实指向了某个对象,即指针确实有效的情况下,*p
才适用。
理解的关键:在定义阶段, 用
int *p
用来定义指针。在操作阶段,*p
是解引用。