gpt4 book ai didi

c - 这个代码片段具体做了什么?

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

这是我的课本中问题的一部分。我无法弄清楚它到底做了什么以及它是如何做到的,所以我来寻求帮助。

int a = 5, b[] = {1, 2, 3, 4, 5};
int *ptr1, *ptr2;
void *ptr3;
ptr1 = &a;
ptr2 = b;
ptr3 = (int*) &ptr2;

这行我不明白

ptr3 = (int*) &ptr2;

我最好的猜测是 ptr3 被分配为一个 int 指针,它现在指向 ptr2 现在指向的同一地址,即数组 b。所以基本上 ptr3 = b

这是正确的吗?谁能解释一下?

最佳答案

*&ptr2给你指针的地址 ptr2 .同时 ptr2指向与 b 相同的位置,即该数组中第一个整数的地址,ptr3将指向 ptr2 的位置b 中的地址被储存了。这意味着它变成了 int**在那一刻。

有点像这样,虽然要小心,ptr2 和 b 具有相同的值但在内存中是不同的:

ptr3 -> ptr2 -> 1,2,3,4,5

           `b /^`

然后代码继续将其转换为 int *由于某些原因,这实际上没有意义,并且在对 void * 的分配中使用了它声明ptr3 .对我来说看起来很不对劲。无论你在哪里找到它,忘记那个来源。

关于c - 这个代码片段具体做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926442/

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