gpt4 book ai didi

任何人都可以向我解释这个意外的点输出吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:47 25 4
gpt4 key购买 nike

int i = 2;
int j = 8;
int *p = &i;
int *q = &j;

所以此时很明显p指向2而q指向8。

(*p) = (*q);

现在指针 p 指向 q,而 q 又指向 j。 j = 8 所以 p 应该指向值 8。最后一部分是:

i++;
printf("%d %d\n", *p, *q);

此输出为 9 8。但是,我不明白这一点,因为 p 指向 q,所以指针 p 不应该不受此更改的影响,因为它指向 8 吗?为什么8会增加1? p 本来是指向 i 的,但是它把指针改成了 q,所以我不明白这个结果。

编辑:感谢你们所有人。您的所有解释对我来说都非常有意义。

最佳答案

不,如果你想让指针p指向q,你需要这样做:

p = q;

p = &j;

这一行:

(*p) = (*q);

等同于:

i = j;

所以,当你做:

i++;

这与:

(*p)++;

这将导致您的输出:

8 9

因为 p 仍然指向 i (p = &i) and (q = &j) and i = 9j = 8

关于任何人都可以向我解释这个意外的点输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19793542/

25 4 0
文章推荐: html - 单元格中
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com