在这些问题上结合问题,但我对它们中的任何一个都不太了解。
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))
或类似的事情。
感谢您的帮助!
答案 0 :(得分:2)
ptr
不是指针。它是struct bundle
。您必须使用&
printf("%d", *(&ptr + 1));
这当然会导致undefined behaviour,但结构良好。
您的意思是printf("%d", ptr.y);
还是printf("%d", ptr.x + 1);
?