在这篇文章中(为什么这个代码的结果是一样的,而arg却不一样?),参数为 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]
那么,参数中的数据类型不同,意味着它的工作原理不同?
在函数中,你应该像这样使用
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;
}
像这样 意思是一样的