我已經得到了一些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