gpt4 book ai didi

无法获取指针结果

转载 作者:行者123 更新时间:2023-11-30 21:33:59 26 4
gpt4 key购买 nike

#include<stdio.h>
void main()
{
int v=10;
char *p=&v;
int i;
for(i=0;i<10;i++,p++)
{
++(*p);
printf("%d",v);
}
}

输出

1126765803168430191684301916843019

我不明白输出是如何产生的,请解释一下

最佳答案

我只能假设,预期的行为是使用指针使变量 v 递增 10 倍。

如果这是正确的,那么你有两个错误:

  1. 指针的类型应与您指向的数据相同。如果您指向 int 变量,则应使用 int * 指针。
  2. for 循环条件中:在每次迭代时,您都会递增 ip (i++,p++)。当您递增指针时,它会移动到下一个存储单元(简单来说,实际上有点复杂)。如果您只想使用变量v,则不应修改指针本身,而只能修改它引用的变量。因此,如果您删除 p++ 部分,您将得到 11, 12, 13, ... 结果。

为什么现在显示出如此奇怪的结果?只是因为在每次迭代时您都会更改指针(因此它引用其他存储单元)。自增后指针所指向的内存可能包含我们可以看到的随机数据。然而,这种方法包含未定义的行为,并且结果可能会有所不同。它甚至可能随着程序的终止而结束。

但是,确实不清楚您期望得到什么行为,如果您能进一步澄清这一点,我想社区将能够为您提供更多帮助。

关于无法获取指针结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346135/

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