第七章:指针
一、指针的基本语法
-
指针:是内存单元的地址,使用指针可以更灵活访问内存单元中的数据
-
变量是存放数据的内存单元,变量的地址就是指针,而且不同类型的变量有不同类型的指针
-
指针的定义:数据类型 *指针变量名 [= 初始值 ] ; // 初始值可以省略
(1) 数据类型是指针所指向的内存单元的类型。前面数据类型是int型,则定义的为int类型指针变量;为float型,则定义的为float类型的指针变量 (2) 初始值是数据类型的内存单元的地址,可以省略不进行初始化,null(代码值为0)可以作为任意类型指针变量的初值 (3) 案例:int i, *p; // 声明int类型的变量i,变量p是指向int类型变量的指针int *q; // 声明一个指针变量p,指向 int类型变量char *cp; // 声明一个指针变量cp,指向字符类型变量float *fp; // 声明一个指针变量fp,指向float类型变量double *dp1,*dp2; //声明两个指针变量dp,指向双精度变量 -
指针的赋值:
(1) &:地址运算符,可以获取对象类型变量的地址 (2) int i, *p;p = &i; // 将int类型变量i的地址取出,得到int类型指针,将它赋值给int类型指针变量p中保存p = 0; // 将特殊值赋值给指针p,这时指针为NULL,代表空指针,不指向任何单元p = NULL; // 同上 -
指针变量的注意事项
(1) 指针变量名是一个标识符,要按照c标识符的命名规则对指针变量进行命名 (2) 指针变量的数据是它所指向的变量类型,一般情况下一旦指针变量类型被确认后,它只能指向同类型的变量 (3) 在定义指针变量时需要使用指针声明符 *,但指针声明符并不是指针的组成部分。例如:int *p; // 说明p是指针变量,而不是 *p
二、指针的运算
-
指针的直接使用
(1) 取地址运算:单目运算符 &,用于取出变量的地址int i, *p; (2) 显示:printf函数可以使用格式符 %p可以将指针以16进制方式显示出来int i;printf("%p",&i); -
指针的间接使用
