这两种类型的指针的参数有何不同?

时间:2020-05-12 10:42:25

标签: c function pointers parameter-passing

在此帖子(Why the result of this code is the same when the arg is different?中,chg的参数为yay *lol,其内部为lol(请注意,前面没有星号)。但是为什么在这段代码中却显示错误?

void chg (int *lol) {lol=9;}

int main ()
{
    int a=5;
    int *boi=&a;
    printf ("%d\n", *boi);
    chg (boi);
    printf ("%d\n", *boi);

    return 0;
}

[Error] invalid conversion from 'int' to 'int*' [-fpermissive]

那么,参数中不同的数据类型意味着它的工作方式不同吗?

1 个答案:

答案 0 :(得分:0)

在功能上应该这样使用

void chg (int *lol) {
    *lol=9;
}

因为它是指针,所以它保留一个地址。带有*的符号,您可以这样说。转到该地址并分配该值。

您也可以像这样使用您的函数

int main ()
{
    int a=5;
    int *boi=&a;
    printf ("%d\n", *boi);
    chg (&a); //send address of a.
    printf ("%d\n", *boi);

    return 0;
}

赞。意思是一样的