使用struct指针作为函数参数时出错值

时间:2012-08-11 09:26:36

标签: c function pointers struct

我遇到了一个非常奇怪的问题。 我定义了一个struct并将它作为const指针传递给一个函数。代码就像吼叫。

typedef struct a{
  char str1[256];
  ...
  int x;
}a_t;

int f(..., const a_t *a){...}

a_t a;
...
a.x = 1;
f(..., &a);
...

问题是一旦它进入f(),我将打印出变量a-> x,它总是0! 但是如果我将结构成员x移动到结构的顶部(在其他成员之前),它将是1,这是正确的。

使用struct指针作为参数是否有任何技巧或陷阱?

[EDIT1]在函数f()

的第1行调用printf

1 个答案:

答案 0 :(得分:2)

无法发表评论所以我会建议调试选项。你能否在函数和之前添加struct element x地址的打印。如果有人正在改变它,否则我们不会看到相同的值。

typedef struct a{
  char str1[256];
  ...
  int x;
}a_t;

int f(..., const a_t *a)
{
    printf("X value %d, address %p", a->x, &(a->x));
    ...
}


a_t a;
...
a.x = 1;
printf("X value %d, address %p", a.x, &(a.x));
f(..., &a);
...

此功能的详细视图也可以提供帮助