我遇到了一个非常奇怪的问题。 我定义了一个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答案 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);
...
此功能的详细视图也可以提供帮助