gpt4 book ai didi

c - 我怎样才能编写工作函数?

转载 作者:行者123 更新时间:2023-11-30 21:23:01 25 4
gpt4 key购买 nike

代码

typedef struct 
{
int *x;int *y;
}point;

void move(point *p)
{
(*p).x=(*p).x+1;
(*p).y=(*p).y+1;
}
int main()
{
point p;
p.x = 10;
p.y = 5;
printf("%d, %d\n", p.x, p.y);
move(&p);
printf("%d, %d\n", p.x, p.y);
return 0;
}

详细信息

我想输出 10,5 和 11,6,但它显示了 10,5 和 15,9。我的代码有什么问题吗?

最佳答案

你对指针是什么知之甚少。 int* 表示它将包含 int 变量的地址。 p.x = 10 的意思是,将 10 赋给该指针变量。然后您将使用错误的格式说明符打印该指针。

然后你就增加了这些指针。访问这个将是一场灾难。指针上的 +1 会将其移动 sizeof(int) ,这并不奇怪。所以您看到的值是 149

typedef struct {int x;int y;}point;

这肯定是您想要的。另外已经提到的其他事情是 (*p).x = p->x。就是这样。

<小时/>

当您说输出是 15,9 时,您错了,它将是 14,9sizeof(int) = 4 在您的系统中。要提供更多信息,应使用 %p 格式说明符打印指针,如下所示。

int *p;
...
printf("%p\n",(void*)p);

关于c - 我怎样才能编写工作函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982166/

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