gpt4 book ai didi

c - 这个C代码错了吗?

转载 作者:行者123 更新时间:2023-12-02 05:29:23 26 4
gpt4 key购买 nike

我知道指针包含变量的地址,例如:

int c = 5;
int *p;
p = &c;
printf("%d",*p); // Outputs 5.

但是如果我想发送一个地址给函数怎么办:

void function (int *p)
{
p++;
}
int c;
function (&c);

当函数被调用时,&c的值被赋值给int *p。我猜确切的指令是:*p = &c;,但我不明白这是什么意思。

最佳答案

我更喜欢这样写int* p = &c;,也就是说,一个指向int类型的指针被赋值给c的地址。

正如您所注意到的,指针表示法可能会造成混淆,因为这两者是等价的:

int *p = &c;

int *p;
p = &c;

希望这对您有所帮助!

编辑:混淆是因为 * 既用作取消引用运算符,又用于声明指针。所以当p包含c的地址时,*p解引用指针并返回c的值。但是当你说 int *p = &c; 时,* 是在说“p 是一个指向 int 的指针”,但没有进行任何取消引用。

关于c - 这个C代码错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com