C语言指针:从基础到实践
1. 指针基础概念
变量可以存储地址,这样的变量被称为指针。通常,指针存储的是另一个变量的地址。例如,有一个指针 pnumber
,它存储了变量 number
的地址, number
是一个整数变量,其值为 99。 pnumber
存储的是 number
第一个字节的地址。“指针” 这个词也可单纯指一个地址,比如 “ strcat_s()
函数返回一个指针”。
需要注意的是,仅仅知道某个变量(如 pnumber
)是指针是不够的。你和编译器都必须知道该指针所指向变量的数据类型。没有这个信息,几乎不可能知道该指针所指向的内存占用了多少空间,或者如何处理其中的内容。例如,一个 char
类型值的指针指向占用 1 字节的内存,而一个 long
类型值的指针通常指向占用 4 字节的内存。这意味着每个指针都与特定的变量类型相关联,并且只能指向该类型的变量。一般来说,对于任何给定的类型名 type
,该类型的指针写作 type*
。
void
类型表示没有任何类型,因此 void*
类型的指针可以包含任何类型数据项的地址。 void*
类型常用于处理与类型无关的数据的函数的参数类型或返回值类型。任何类型的指针都可以作为 void*