gpt4 book ai didi

c - 指针算术与结构

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:31 24 4
gpt4 key购买 nike

沿着这些思路提出几个问题,但我不太明白其中的任何一个。

struct bundle 
{
int x;
int y;
};

void foo(struct bundle *A, int p)
{
A->x = p;
A->y = p;
}

main()
{
struct bundle ptr;
foo(&ptr, 0);
//printf("%d",*(ptr + 1)); ISSUE HERE
}

我的打印语句不起作用...有什么想法吗?

我正在使用一个在线 C 编译器,它给我这个错误

invalid operands to binary +

但我不认为编译器与它有任何关系。

我试过将它转换为 (int *) 但没有成功。我很确定我正在做正确的 *(ptr + 1) 而我不必做 *(ptr + sizeof(int)) 或类似的事情。

感谢您的帮助!

最佳答案

ptr不是指针。这是一个struct bundle .您必须使用 & 获取地址:

printf("%d", *(&ptr + 1));

这当然会导致 undefined behaviour , 但它是良构的。

你是说 printf("%d", ptr.y);printf("%d", ptr.x + 1);

关于c - 指针算术与结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832519/

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