将指针传递给函数

将指针传递给函数的能力非常有用,但也很容易掌握。 如果我们要编写一个程序,接受一个数字并将其加五,我们可能会编写如下内容:

#include <stdio.h>

void AddFive(int Number)
{
    Number = Number + 5;
}

void main()
{
    int nMyNumber = 18;
    
    printf("My original number is %d\n", nMyNumber);
    AddFive(nMyNumber);
    printf("My new number is %d\n", nMyNumber);
}

然而,这样做的问题是 Number提到 AddFive是变量的副本 nMyNumber传递给函数,而不是变量本身。 因此,线 Number = Number + 5将 5 添加到 副本中,将原始变量保留在 变量的 main()不受影响。 尝试运行程序来证明这一点。

为了解决这个问题,我们可以将一个指向数字在内存中保存位置的指针传递给该函数,但我们必须更改该函数,以便它需要一个指向数字的指针,而不是一个数字。 为此,我们改变 void AddFive(int Number)到 void AddFive(int* Number), 添加星号。 这又是程序,做了一些改动。 请注意,我们必须确保我们传递的地址 nMyNumber而不是数字本身? 这是通过添加 &标志,(你会记得)被读作“地址”。

#include <stdio.h>
void AddFive(int* Number)
{
    *Number = *Number + 5;
}

void main()
{
    int nMyNumber = 18;
    
    printf("My original number is %d\n", nMyNumber);
    AddFive(&nMyNumber);
    printf("My new number is %d\n", nMyNumber);
}

试着想出一个你自己的例子来证明这一点。 注意到 AddFive 函数中 Number 之前的 * 的重要性了吗? 这需要告诉编译器我们要将 5 加到变量 Number 指向的数字上,而不是将 5 加到指针本身上。 关于函数的最后一点要注意的是,您也可以从它们返回指针,如下所示:

int * MyFunction();

在此示例中,MyFunction 返回一个指向整数的指针

posted @ 2023-02-18 12:01  朱英浩  阅读(41)  评论(0编辑  收藏  举报