不同的同名变量(C语言)

时间:2017-06-20 05:23:14

标签: c pointers

最终编辑:首先,谢谢你们耐心等待。将来我会尝试将MCVE带到我问的任何问题。

该程序现在似乎工作正常 - 我可能无意中删除了一个错字或其他东西。

这个问题让我很烦恼 - 我没有选择以这种方式实施它,但它是必需的,我需要解决它。

我有一个应该从结构中读取数据的函数,如下所示:

typedef struct {
    int data;
    char extraneous_stuff[];
} MyStruct;
...
//there's also a ParentStruct that holds a MyStruct array
...
void read_data(ParentStruct *parent, int which_MyStruct, int *data) {...

我需要做的是使用int *数据作为out参数从选定的MyStruct中复制int数据。当然,我遇到的问题是 out-parameter和MyStruct字段具有完全相同的名称。我发现尝试直接复制,即编译*data = parent->array[which_MyStruct].data;,但数据实际上并未复制到out参数。

为了遵守规范,我不应该在这里更改参数的名称。我注定了吗?

编辑:我在函数中包含了以下print语句:

printf("%d", *data);
printf("%d", parent->array[which_MyStruct].data); 

并且已经放了

int n = 0;
void read_data(*parent, which_MyStruct, &n)

我回来了

0
0

结果。

编辑2:

好的,这很奇怪。我有这个:

MyStruct current = parent->array[which_MyStruct];
printf("%s", current.extraneous_stuff[0]);
printf("%d", *data);
printf("%d", parent->array[which_MyStruct].data); 

现在突然" parent-> array [which_MyStruct] .data"具有适当的价值。 也许这是未定义的行为,因为我做的唯一改变是包括print语句" printf("%s",current.extraneous_stuff [0]);"并且输出发生了变化。

0 个答案:

没有答案