1、6.1 指针的概念6.2 指针与函数6.3 指针与数组6.4 动态内存分配第第 6章章 指针指针16.1 指针的概念指针的概念u 在 定义变量时,系统就给这个变量分配内存单元。u 一个变量在内存中占用一个存储空间,而存储空间的大小(字节数)是由变量的类型决定的。6.1.1 地址与指针地址与指针26.1.1 地址与指针地址与指针u 内存区的每一个字节有一个编号,这就是内存单元的 “地址 ”。u 根据一个内存单元的地址(编号)即可准确地找到该内存单元。u 如果变量占用多个字节的内存单元将对应多个编号。为了能正确的访问变量所代表的存储空间, C语言规定将一个变量所占用的存储空间第 1个字节的地址(即
2、首地址)称为该 变量的地址 。 36.1.1 地址与指针地址与指针在 C语言中,将地址形象化地称为 “指针 ”。意思是通过它能找到以它为地址的内存单元。 int a,b;a b2000 2004 a=5;5直接访问按变量名来访问变量所对应的存储空间而存取变量值的方式称为 直接访问 。46.1.1 地址与指针地址与指针int a=2,b=4,c; 变量 存储空间 地址c13ff7013ff7113ff7213ff73b13ff7413ff7513ff7613ff77a13ff7813ff7913ff7a13ff7b24值不确定c=a*b; 8直接访问56.1.1 地址与指针地址与指针int a;
3、ap13ff78 p=间接访问定义特殊变量 p13ff78 通过 p来访问 a为了表示将数值送到变量中,可以有两种表达方法:(1) 将 3直接送到变量 a所 代表 的单元中 。 a=3(2) 将 3送到变量 p所指向的单元(即 a所代表 的存储单元)先访问指针 p的存储空间,其中存放的是变量 a的地址值,再根据该地址值访问变量 a的存储空间。这种访问方式称为 间接访问 。66.1.1 地址与指针地址与指针u 一个变量的 地址 称为该变量的 “指针 ”u 例如,地址 13ff78是变量 a的指针u 如果有一个变量专门用来存放另一变量的地址(即指针),则它称为 “指针变量 ”u 例如, p就是一个
4、指针变量。u 指针变量就是地址变量,用来存放地址的变量,指 针 变量的值是地址(即指针)76.1.1 地址与指针地址与指针“指针 ”和 “指针变量 ”是 不同的 概念u 可以说变量 a的指针是 13ff78,而不能说 a的指针变量是 13ff78u 指针是一个地址,而指针变量是存放地址的变量86.1.2 指针的定义与初始化指针的定义与初始化1.指针的定义u定义指针 的一般形式为 :存储类型 数据 类型 *指针变量名 ;例: int *p,*q;与普通变量一样相同 表示指针所指向目标变量的类型 表示其后定义的是指针变量遵循标识符的命名规则 9例: int *p,*q; int是 为 指针变量指定的 “基类型 ” 基类型指定指针变量可指向的变量类型 如 p, q可以指向整型变量,但不能指向浮点型变量例: char *s;定义指针变量 s,为指向字符变量的指针变量。6.1.2 指针的定义与初始化指针的定义与初始化10