Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同名的不同变量(C语言)_C_Pointers - Fatal编程技术网

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

同名的不同变量(C语言),c,pointers,C,Pointers,最后的编辑:首先,感谢你们的耐心。将来,我会尝试对我提出的任何问题进行MCVE 该程序现在似乎运行良好-我可能无意中删除了一个打字错误或其他东西 这个问题让我很恼火——我没有选择这样实现它,但它是必需的,我需要解决它 我有一个函数,应该从结构中读取一段数据,如下所示: typedef struct { int data; char extraneous_stuff[]; } MyStruct; ... //there's also a ParentStruct that hol

最后的编辑:首先,感谢你们的耐心。将来,我会尝试对我提出的任何问题进行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参数和MyStruct字段的名称完全相同。我发现试图直接复制,即,
*data=parent->array[which\u MyStruct].data已编译,但数据实际上没有复制到out参数

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

编辑:我在函数中包含以下打印语句:

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.extronous_stuff[0])”,并且输出已更改。

编译它是因为可以这样做。由于其他原因,复制失败。请提供MCVE,因为存在与命名约定无关的问题。显示如何声明和初始化
父项。请参阅:。有关调试的帮助,请参阅,您不能拥有可变长度结构的数组。请编译它,因为这样做是可以的。由于其他原因,复制失败。请提供MCVE,因为存在与命名约定无关的问题。显示如何声明和初始化
父项。请参阅:。有关调试的帮助,请参阅,您不能拥有可变长度结构的数组。