C 语言传递地址和指针

在C语言编程中,也可以将地址作为参数传递给函数。

为了在函数定义中接受这些地址,我们可以使用指针。这是因为指针用于存储地址。让我们举个例子


示例:将地址传递给函数

#include <stdio.h>
void swap(int *n1, int *n2);

int main()
{
    int num1 = 5, num2 = 10;

    // address of num1 and num2 is passed
    swap( &num1, &num2);

    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}

void swap(int* n1, int* n2)
{
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

运行程序后,输出将是

num1 = 10
num2 = 5

通过swap(&num1, &num2);num1num2的地址传递给swap()函数。

指针n1n2在函数定义中接受这些参数。

void swap(int* n1, int* n2) {
    ... ..
}

swap()函数内的*n1*n2被更改时,main()函数内的num1num2也会被更改。

swap()函数中,*n1*n2被交换。因此,num1num2也被交换了。

请注意,swap()没有返回任何内容;它的返回类型是void


示例2:将指针传递给函数

#include <stdio.h>

void addOne(int* ptr) {
  (*ptr)++; // adding 1 to *ptr
}

int main()
{
  int* p, i = 10;
  p = &i;
  addOne(p);

  printf("%d", *p); // 11
  return 0;
}

这里,最初存储在p中的值*p是10。

然后我们将指针p传递给addOne()函数。在addOne()函数中,ptr指针获取了这个地址。

在函数内部,我们使用(*ptr)++;ptr中存储的值加1。由于ptrp指针都具有相同的地址,因此main()中的*p也变为11。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战