带结构的指针算法

时间:2014-11-09 19:48:47

标签: c struct

在这些问题上结合问题,但我对它们中的任何一个都不太了解。

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))或类似的事情。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

ptr不是指针。它是struct bundle。您必须使用&

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

这当然会导致undefined behaviour,但结构良好。

您的意思是printf("%d", ptr.y);还是printf("%d", ptr.x + 1);