我已经得到了一些C代码,我不能改变结构在不同的函数变化的变量。我在我的主函数中有一个名为arr的数组:使用指针
int arr[4] = {1,2,3,4}
我必须在另一个函数中更改此数组的值。在主函数内部使用如下内容:
change_array(arr);
change_array方法在另一个.c文件中实现。我只允许在change_array函数内进行更改。
void change_array(void *the_array)
{
}
在这个函数中我想改变arr的值。我发现我可以用得到的数组的第一个值:
int first_value = *(int*)the_array;
我可以用得到的第一个值的位置:
int location = the_array;
我试图改变这些值:
*the_array = 1;
但这并没有解决我的问题。有任何想法吗?
你需要数组的大小/长度以及 – 2014-10-27 18:22:39
无效不是一个类型来改变其值。您需要将the_array转换为int指针。所以,'*(int *)the_array = 1'应该可以工作。但我想知道为什么不改变'change_array(int * the_array)'。 – 2014-10-27 18:24:03
将the_array复制到堆栈上的一个int * p,然后p [x] = newvalue; – user3629249 2014-10-27 21:33:12