C语言 指针是存储另一个变量的地址的变量。与保存某种类型值的其他变量不同,指针保存变量的地址。例如,整数变量保存(或者可以说是存储)整数值,但整数指针保存整数变量的地址。在本指南中,我们将在示例的帮助下讨论C 编程中的指针。
在我们讨论 C 中的指针之前,让我们举一个简单的例子来理解变量地址的含义。
一个简单的例子,了解如何在没有指针的情况下访问变量的地址?
在这个程序中,我们有一个int
类型的变量。num
的值是 10,这个值必须存储在内存中的某个地方,对吧?为保存该变量值的变量分配一个内存空间,该内存空间有一个地址。例如,我们住在一所房子里,我们的房子有一个地址,帮助其他人找到我们的房子。同样,变量的值存储在内存地址中,这有助于 C 程序在需要时找到该值。
因此,假设分配给变量num
的地址是0x7fff5694dc58
,这意味着我们应该将赋给num
的任何值存储在以下位置:0x7fff5694dc58
。见下图。
输出:
C 中指针的一个简单例子
该程序显示如何声明和使用指针。我们可以使用指针做其他一些事情,我们在本指南后面讨论过它们。现在,我们只需要知道如何将指针链接到变量的地址。
需要注意的重点是:指针的数据类型和变量必须匹配,
int
指针可以保存int
变量的地址,类似地用float
数据类型声明的指针可以保存float
变量的地址。在下面的示例中,指针和变量都是int
类型。
输出:
C 指针 – 与指针一起使用的运算符
让我们讨论一下用于 C 中的指针的运算符。
&
地址运算符
我们在第一个例子中已经看到,我们可以使用&
符号显示变量的地址。我用&num
来访问变量num
的地址。&
运算符也称为地址运算符。
注意事项:%p
是一种格式说明符,用于以十六进制格式显示地址。
既然您知道如何获取变量的地址,但如何将该地址存储在其他变量中? 这就是指针有用的地方。如本指南开头所述,C 编程中的指针用于保存另一个变量的地址。
指针就像另一个变量,主要区别在于它存储另一个变量的地址而不是值。
“地址值”(*
)运算符
*
运算符也称为地址值运算符。
如何声明指针?
以上是指针声明的几个例子。 如果你需要一个指针来存储整数变量的地址,那么指针的数据类型应该是 int
。同样的情况与其他数据类型有关。
通过使用*
运算符,我们可以通过指针访问变量的值。
例如:
*p
会给我们变量a
的值。以下语句将显示 10 作为输出。
同样,如果我们像这样为*
指针赋值:
它会改变变量a
的值。上面的语句会将a
的值从 10 更改为 200。
使用&
和*
的指针示例
输出:
让我们举更多的例子来更好地理解它,让我们说我们有一个char
变量ch
和一个指向它的指针ptr
。
读取ch
的值
改变ch
的值
上面的代码会将值'a'
替换为'b'
。
您能猜出以下 C 程序的输出吗?
输出:
关于指针的更多主题
1) 指向指针的指针 – 一个指针可以指向另一个指针(这意味着它可以存储另一个指针的地址),这样的指针称为双重指针或者指针的指针。
2) 将指针传递给函数 – 指针也可以作为参数传递给函数,使用此功能可以按引用调用函数,并且可以将数组传递给函数。
3) 函数指针 – 函数指针就像另一个指针,它用于存储函数的地址。函数指针也可用于调用 C 程序中的函数。