介绍
指针是内存单元的 编号,地址就是指针。一句话通过指针和指针变量 可以在不同函数间 间接 对数据进行操作
快速入门
int * p:p是变量名,p变量的数据类型是int * 类型,所谓int * 类型实际就是存放int变量地址的类型,不表示定义了一个名字叫*p的变量
&i: & 取地址运算符,这里指取i 的地址
*p:* 取地址变量所指向的实际地址里存放的数据
#include <stdio.h> int main(void) { int * p; //p是变量的名字,int * 表示p变量存放的是int类型变量的地址 //int * p:不表示定义了一个名字叫做*p的变量 //int * p:p是变量名,p变量的数据类型是int *类型,即int * 类型实际就是存放int变量地址的类型 int i = 3; p = &i; /* 1.p保存了i的地址,因此p指向i;; 2.p不是i,i也不是p,更准确的说:修改p的值不影响i的值,修改i的值也不会影响p的值 *+指针变量 就完全等同于 普通变量 */ printf("%d ", *p); return 0; } /* 输出结果: 3 */
内存图:
指针的作用
- 表示一些复杂的数据结构;
- 快速的传递数据;
- 使函数返回一个以上的返回值;
- 能直接访问硬件;
- 能够方便的处理字符串;
- 是理解面向对象语言的基础。
总结:指针是c语言的灵魂。
指针的定义
- 指针:指针就是地址,地址就是指针;指针变量就是存放地址的变量
- 地址:内存单元的编号
- 从零开始的非负整数
- 范围:4G [0--(4G-1)](下面两图解释为什么地址范围是4G)
cpu与内存条交互过程:
cpu与内存条通过地址总线的交互过程图:
指针的分类
- 1.基本类型的指针;
- 2.指针和数组;
- 3.指针和函数;
- 4.指针和结构体;
- 5.多级指针。