指针知识再梳理——为本学期的《数据结构》课程做铺垫。
距离笔者学习C语言已经过了一整个暑假了,了解到本学期开设了《数据结构》这门课。《数据结构》学好的前提就是精通指针,指针是C语言的灵魂,学会指针就学会了C语言。
指针的作用
1. 表示一些复杂的数据结构,如链表和图。(数据之间有着一定的联系,需要指针去实现)。 ——数据结构细讲
2. 快速的传递数据。——后面讲
3. 使函数返回一个以上的值。通过指针可以让函数返回一个以上的值。 ——如何让一个函数返给主函数多个返回值
4. 能直接访问硬件,底层编程语言所必须具有的特性 。 ——汇编语言
5. 能够方便的处理字符串 ——后面讲
6. 指针是理解面向对象语言中“引用”的基础。 ——学Java理解
什么是指针?
指针就是地址,地址就是指针。地址是内存单元的编号。注意:内存最小的编号是字节,不是位。8位=1字节。内存的编号是以二进制的形式存放的。
指针变量是存放指针(地址)的变量。
指针的本质
指针的本质是一个操作受限的非负整数。其不能加、乘和除。只能做减法。
首地址
我们知道,在C语言中通常int类型的数据占用4个字节,那么就会有4个内存编号,即地址(指针)。那么我们如何用一个地址代表这个变量呢?答案是:使用首地址,即4个指针中的第一个指针来代表这个变量。
上图可以看到,在C语言中一般指针变量占用4个字节。
*与&
*:取值操作符
&:取址操作符
怎样理解 int *p?
定义变量p,其数据类型是“ int * ”类型。所谓“int *”类型就是存放p变量地址的类型。即p只能存放整形变量的地址。
移步:*在C语言指针中的用处和不同作用