什么是指针
它基本上是内存中变量的地址。它允许我们间接访问变量。因此,使用指针我们可以通过解除引用指针来讨论变量的地址(以及它的值)。当我们想要处理内存位置的地址而不是它的值时,它们很有用。
考虑 C 中的以下简单交换函数:
void Swap(int firstVal, int secondVal)
{
int tempVal = firstVal;
firstVal = secondVal;
secondVal = tempVal;
}
现在在 main 中如果我们有以下代码:
.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
a 和 b 的值将保持不变,这可以通过在 main 函数中打印它们的值来清楚。为了正确实现交换函数,我们将变量 a 和 b 的地址传递为:而不是传递变量 a
和 b
的值:
swap(&a,&b);
运算符 &
返回变量的地址。它使用如下:
int *address_of_a = &a;
int *address_of_a
,表示变量 address_of_a
指向(存储地址)整数变量。
现在我们正确的交换功能将是:
void Swap(int *firstaddress, int *secondaddress)
{
int tempVal = *firstaddress;
*firsaddress = *secondaddress;
*secondaddress = tempVal;
}
现在互换的值将反映在 main 函数中:
int a = 9,b = 100;
swap(&a,&b);
//print
如果你没有原始变量,你可以使用*
取消引用指针。假设在一个函数中你没有原始变量但是它的地址在指针变量 int *x
中。我们可以简单地访问内存地址的值为 value = *x
;
如果我们没有指针,我们就永远无法模仿 C
中的引用传递,因为 C
是按值传递的。但请记住,我们只能模拟,因为即使我们使用指针,int *firstaddress, int *secondaddress
也只是创建的局部指针变量,它具有变量 a
和 b
的地址。