这2种指针的参数有什么不同?

问题描述 投票:0回答:1

在这篇文章中(为什么这个代码的结果是一样的,而arg却不一样?),参数为 chgyay *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]

那么,参数中的数据类型不同,意味着它的工作原理不同?

c function pointers parameter-passing
1个回答
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;
}

像这样 意思是一样的

© www.soinside.com 2019 - 2024. All rights reserved.