指针
C语言中指针是一种数据类型,也是C语言的一个重要特色。指针是存放数据的内存单元地址。
作用
1、使程序简洁、紧凑、高效。
2、有效地表示复杂的数据结构。
3、动态分配内存。
4、获得多于一个的函数返回值。
计算机系统的内存单元拥有大量的存储单元(每个存储单元的大小为1字节),为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”。每个存储单元拥有一个唯一的地址。
指针变量
指针变量是专门用于存储其他变量地址的变量
【格式】 数据类型 *指针变量名;
“ * ” 表示定义的是一个指针变量。
指针变量的初始化,可以是已定义的变量的地址,也可以是已初始化的同类型的指针变量,也可以是NULL(空指针)。
int num = 5;
int *num_pointer = #
int *num_pointer2 = NULL;
printf("%d", *num_pointer);
char x;
char *pointer = &x;
float a, b[5], *p1 = &a, *p2 = b;
说明:
1、指针变量必须在其名字前使用 *。
2、指针变量只能指向定义时指定的数据类型的变量。
3、指针变量定义后,其值不确定,使用之前必须先赋值后使用。
4、指针变量可以初始化为0(唯一可以赋给指针变量的整数值)、NULL(不指向任何地址)。
一维数组名可以看成是地址常量,其值是一维数据的首地址。例如,定义一维数组 int a[3]; , 在程序中可以直接使用数组名 a 表示一维数组的首地址。
需要使用地址时,可以直接引用指针变量名。
指针的基本运算
1、取地址运算符 &
取地址运算符 & 的功能是取变量的地址,它是单目运算符。取地址运算符的运算对象必须是已经定义的数组元素或变量,但不能是数组名。运算结果是运算对象的地址。
2、指针运算符 *
指针运算符 * 的功能是取指针变量所指向地址中的内容,与取地址运算符 & 的运算是互逆的,它是单目运算符。指针运算符的运算对象必须是地址,可以是已赋值的指针变量,也可以是变量或数组元素的地址,但不能是整数,也不能是非地址型的变量。运算结果就是地址对应的变量。