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() 函数。

在函数定义中使用指针 n1 和指针 n2 接受这些参数:

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

swap() 函数里面, *n1*n2 进行了交换。因此,num1num2 的值也被交换了。

注意 swap() 没有任何返回,它的返回类型是 void .

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

#include <stdio.h>

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

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

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

i 的地址赋值给指针 p,也就是说 *p 的值最初为 10

然后我们传递了指针 paddOne() 函数。并在函数内部,将指针指向的地址中的值进行了自加 (*ptr)++;。因此 main() 函数中的 *p 的值也是 11

结论:

指针指向的是变量的地址,赋值的时候也是将变量的地址赋值给指针。因此传递指针,就是传递地址。