指针
C语言中指针是一种数据类型,也是C语言的一个重要特色。指针是存放数据的内存单元地址。
作用
1、使程序简洁、紧凑、高效。
2、有效地表示复杂的数据结构。
3、动态分配内存。
4、获得多于一个的函数返回值。
计算机系统的内存单元拥有大量的存储单元(每个存储单元的大小为1字节),为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”。每个存储单元拥有一个唯一的地址。
不同的数据类型占用的内存单元个数不等,C语言的编译系统会根据源程序中定义的变量类型为其分配内存单元。
字符型变量占用 —— 1字节
短整型变量占用 —— 连续2字节
单精度实型变量占用 —— 连续4字节
双精度实型变量占用 —— 连续8字节
当变量占用1字节时,该字节的地址就是变量的地址;当变量占用若干连续字节时,第一字节的地址就是该变量的地址。内存单元的地址与内存单元的数据是两个完全不同的概念。变量的地址是系统分配给变量的内存单元的起始地址。
C语言规定在程序中可以定义一种特殊的变量(称为指针变量),用来存放其他变量的地址。
指针变量可以存放变量的地址,也可以存放数组和函数的地址。这是因为数组和函数在内存中都是连续存放的,它们的起始地址是所占用的若干连续内存单元的第一个字节的地址。所以,只要将数组和函数在内存中的起始地址赋予一个指针变量,则可以通过该指针变量访问数组和函数,但是指针变量的数据类型与其所指向的变量、数组或函数的数据类型一致。