2017-05-18 141 views
1

我有可變寫指針的指針陣列中的

int v1, v2; 

我有兩個指針:

int *ptr1, *ptr2; 

和指針數組

int *array[2] = {ptr1, ptr2}; 

它是可以改變ptr1使用指針數組來做類似ptr1 = &v2的操作

array[0] = &v1;(我知道這個紀錄是錯的,但我的意思是寫新值到PTR1指針的想法)

+3

不,這是因爲數組存儲*副本*指針不可能的。爲此,將指針存儲到指針。 '''int * ptr1 = &v1; int ** arr [] = {&ptr1}; * arr [0] = &v2;''' – user5821508

+0

@ user7408320哪種語言? C? C++? – songyuanyao

回答

3

你不能用一個int* [](指針數組)做到這一點,因爲array元素只是一個副本,那麼元素的任何修改都與原始指針無關。所以array[0] = &v1;不會改變ptr1

您可以使用int** [](指向指針的指針數組),例如,

int **array[2] = {&ptr1, &ptr2}; 

然後

*array[0] = &v1; // this will make ptr1 point to v1