什么是指针

它基本上是内存中变量的地址。它允许我们间接访问变量。因此,使用指针我们可以通过解除引用指针来讨论变量的地址(以及它的值)。当我们想要处理内存位置的地址而不是它的值时,它们很有用。

考虑 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 的地址传递为:而不是传递变量 ab 的值:

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 也只是创建的局部指针变量,它具有变量 ab 的地址。