用 C 语言学习指针既简单又有趣。有了指针,可以简化一些C编程任务的执行,而一些任务,比如动态内存分配,没有指针就无法执行。所以,要想成为一名优秀的C程序员,学习指针是很有必要的。如您所知,每个变量都有一个内存位置,每个内存位置定义一个可以使用连字符 (&) 运算符访问的地址,它表示内存中的一个地址。
看看下面的例子,它会输出定义的变量的地址:
通过上面的例子,我们了解了内存地址是什么以及如何访问它。接下来让我们看看指针是什么。
什么是指针?
指针是一个变量,其值是另一个变量的地址,即内存位置的直接地址。就像任何其他变量或常量一样,您必须先声明一个指针,然后才能使用它来存储另一个变量的地址。指针变量声明的一般形式是:type *var-name; 其中 type 是指针的基类型,它必须是有效的 C 数据类型,var-name 是指针变量的名称。用于声明指针的星号 * 与乘法中使用的星号相同。但是,在此语句中,星号用于指定变量是指针。以下是有效的指针声明:
所有指针值的实际数据类型,无论是整数、浮点数、字符还是任何其他数据类型,都是相同的,一个长的十六进制数表示内存地址。不同数据类型的指针唯一的区别就是指针所指向的变量或常量的数据类型不同。
如何使用指针?
在使用指针时,经常会进行如下操作:定义一个指针变量,将变量地址赋给指针,访问指针变量中可用地址的值。它们使用一元运算符 * 返回操作数指定地址处的变量值。以下示例涉及这些操作:
C中的空指针
声明变量时,如果没有要分配的确切地址,则将 NULL 值分配给指针变量是一种很好的编程习惯。赋值为 NULL 的指针称为空指针。
NULL 指针是标准库中定义的常量,其值为零。请参阅以下程序:
在大多数操作系统上,不允许程序访问地址 0 处的内存,因为该内存由操作系统保留。但是,内存地址 0 有特殊的意义,表示指针没有指向可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何内容。
要检查空指针,可以使用这样的 if 语句:
更多关于指针
在 C 语言中,有许多与指针相关的概念虽然简单但很重要。下面列出了一些 C 程序员必须了解的与指针相关的重要概念:
对了,这些列出来,要好好掌握,指针基本上可以贯穿整个C语言,所以要打好基础,加油!
领取专属 10元无门槛券
私享最新 技术干货