gpt4 book ai didi

c - 使用结构体指针作为函数参数时得到错误的值

转载 作者:行者123 更新时间:2023-11-30 20:16:21 25 4
gpt4 key购买 nike

我遇到了一个很奇怪的问题。我定义了一个结构并将其作为常量指针传递给函数。代码如下。

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,这是正确的。

使用结构体指针作为参数有什么技巧或陷阱吗?

[EDIT1] printf 在函数 f() 的第一行被调用

最佳答案

无法评论,所以我会建议调试选项。您能否在函数中及其之前添加结构元素 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);
...

该功能的详细 View 也会有所帮助

关于c - 使用结构体指针作为函数参数时得到错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11913487/

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